Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Модреврайт и index.php

Сообщения:  [1-10] 

 
 автор: Лена   (14.01.2009 в 22:56)   письмо автору
 
   для: xx7   (14.01.2009 в 02:11)
 

>и начать разрабатывать новый сайт с нуля , но уже c человекомподменяемыми или человекопрочитабельными адресами взависимости от настроения

В следующий раз так и буду делать. Теперь знаю, что при неправильном использовании человекопонятный может превратиться в человеконепонятный. :)
Михаил, спасибо.

  Ответить  
 
 автор: Лена   (14.01.2009 в 22:53)   письмо автору
 
   для: Trianon   (14.01.2009 в 09:49)
 

>Надеюсь, намек понят.
Понят. Только как можно что-то бояться, если ты об этом ничего не знаешь? Вот и поняла я, что реврайт с относительными ссылками не работает и пo другому - никак, нужны только абсолютные. Посмотрела - у меня все пути относительные. Хороший урок. Впредь буду знать.

>Между прочим...
Взяла в качестве разделителя _.
Адреса типа http://www.domen.ua/index_163_137 стали работать только тогда, когда я в разметку добавила базовый адрес <BASE HREF=...>
Иначе при нажатии на любую другую ссылку (не переделанную реврайтом) получалось вот что:
http://www.domen.ua/index_163_137?pade=45&foto=356.

PS.Метод с - или _(или др. разделитель) прошел проверку и получил название Trianon`s_rewrite :)
Спасибо.

  Ответить  
 
 автор: Trianon   (14.01.2009 в 09:49)   письмо автору
 
   для: Лена   (14.01.2009 в 00:13)
 

Между прочим... если в качестве разделителя параметров в этом самом ЧПУ применить не / (слэш), а скажем - (минус) , то проблема плавающей глубины вложенности уйдет.

  Ответить  
 
 автор: xx7   (14.01.2009 в 02:11)
 
   для: Trianon   (14.01.2009 в 01:02)
 

> человекоподобным
поправка, человекопонятийным :)
насчёт вопроса , стили могут пропасть ,если там ставятся относительные пути.
И это ещё не всё плохое что может случиться . Если например гдето есть формирования action из form
с помощью $_SERVER['PHP_SELF'], или применение других функций работающих с файловой системой для получения линков получится то-же что только наоборот.
Думаю это провод подумать не отказаться-ли от желания сделать адреса компактнее.
Это-бы неплохо работало , если-бы все стили, картинки лежали ближе к корню сайта,
а в коде страниц были-бы абсолютные пути.
Или вообще эта папка использовалась-бы только для показа картинок скриптом.
А так если теперь всё исправлять , то нужно знать какие там ссылки или линки возможны-то в этой дирректории /add/
Получится в лушем случае, ещё одно правило замены , но это будет наверное не лучшим выходом
Вобщем решать надо ,) изменить, ли скрипты и структуру того что в там есть , или делать ещё возможно не одно правило подмены,, или оставить всё как было , и начать разрабатывать новый сайт с нуля , но уже
c человекомподменяемыми или человекопрочитабельными адресами взависимости от настроения

  Ответить  
 
 автор: Trianon   (14.01.2009 в 01:02)   письмо автору
 
   для: Лена   (14.01.2009 в 00:13)
 

и ссылки на стили и ссылки на другие страницы у Вас страдают, потому что являются относительными, а значит отсчитываются браузером от базового каталога, которым по умолчанию является каталог документа, содержащего ссылку. Каталог - в понимании браузера, который никаких реврайтов не знает , не хочет и не может знать. Всё чем он обладает - это URI документа , который Вы сделали человекоподобным. Именно поэтому каталоговая глубина этого URI выходит на первый план.

На самом деле все это объяснять человеку, который не боится ни ЧПУ, ни таких ссылок с плавающей глубиной - дело совершенно не мое. Я в этом настолько профессионально, чтобы что-либо советовать, просто не разбираюсь. Почему и задал вопрос. Надеюсь, намек понят.

Если б мне до зарезу приспичили бы сделать подобную линковку, то я наверное бы применил что-нибудь вроде тега <BASE href=... >

  Ответить  
 
 автор: Лена   (14.01.2009 в 00:13)   письмо автору
 
   для: Trianon   (13.01.2009 в 23:50)
 

Уже смущает. Но все равно это проблемы моей не решило.

  Ответить  
 
 автор: Trianon   (13.01.2009 в 23:50)   письмо автору
 
   для: Лена   (13.01.2009 в 23:19)
 

И Вас не смущает, что у них разная глубина вложенности каталоговой структуры?

  Ответить  
 
 автор: Лена   (13.01.2009 в 23:19)   письмо автору
 
   для: Trianon   (13.01.2009 в 21:46)
 

>RewriteRule ^index/([0-9]+)/([_A-Za-z0-9]+)/?$ index.php?page_id=$1&quest=$2 [L,QSA]
/ может быть и может не быть.
Ссылка может быть такой index/35/45 или вот такой index/35/45/

  Ответить  
 
 автор: Trianon   (13.01.2009 в 21:46)   письмо автору
 
   для: Лена   (13.01.2009 в 21:18)
 

RewriteRule ^index/([0-9]+)/([_A-Za-z0-9]+)/?$ index.php?page_id=$1&quest=$2 [L,QSA]

В регулярном выражении я выделил знак вопроса. Он случайно поставлен или осознанно?

  Ответить  
 
 автор: Лена   (13.01.2009 в 21:18)   письмо автору
 
 

Есть файл index.php, находится он в корне и к нему подключаются и модули, и стили и все остальное.

Пробую с помощью модреврайта переделать ссылки в одном модуле. Все остальные пока не трогаю.

Кладу файл .htaccess в корень, прописываю в нем:

RewriteEngine on 
RewriteBase /
#quest.tpl
RewriteRule ^index/([0-9]+)/([_A-Za-z0-9]+)/?$ index.php?page_id=$1&quest=$2 [L,QSA]


В шаблоне модуля(Смарти) quest.tpl пишу ссылку:

{foreach from=$quest item=one}
<p><A HREF='index/{$one.page_id}/{$one.id}'>{$one.main_text}</A></p><br>
{/foreach}


Когда кликаю по ссылке - стили исчезают, все остальное - на своих местах. В строке запроса -
http://avart.ua/index/163. Кликаю по другой ссылке этого же модуля - в адресной строке http://avart.ua/index/163/index/164/138 - получается, что все, что идет в строке дальше воспринимается не как запрос.

Добавляю в .htaccess флаг редиректа:
RewriteRule ^index/([0-9]+)/([_A-Za-z0-9]+)/?$ index.php?page_id=$1&quest=$2 [L,QSA,R] - и ссылки работают, как надо, то есть index.php учитывается.

Как мне учесть то, что запросы к страницам идут через index.php?

  Ответить  

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования