PDA

Просмотр полной версии : Mod_rewrite: Подскажите сайт по теме


Joe
29.09.2006, 22:08
Подскажите, пжл, сайт по теме для новичка, чтобы можно было самому разобраться.

Вообще нужно убрать .php из адреса и прибавить / на конце. Буду признателен за помощь.

GHz
29.09.2006, 22:16
Яндекс рулит.

Joe
29.09.2006, 22:19
Не флуди. Нужно понятное! То, что переведено с английского или сперто с неизвестного сайта 10 лет назад - я могу найти сам.

Xover
29.09.2006, 22:42
начнем так, ты регулярные выражения знаешь?

на phpclub.ru тебе дорога.

achilles
30.09.2006, 00:53
если он задаст такой же вопрос у них на форуме, они его точно пошлют .........

phpclub.ru >> FAQ ищи там

Шуранов
30.09.2006, 01:02
Да, в принципе, вопрос довольно простой. Не стоит ради него отправлять на Гугль. Только есть один момент - mod_rewrite не исправляет ссылки в документе - их придется исправить вручную. То есть, если необходимо убрать .php, то это придется сделать в документе, а потом уже с помощью mod_rewrite преобразовывать ссылки в правильные запросы. А правила mod_rewrite довольно простые. Обычные регулярные выражения, результат работы которых - правильная ссылка.
Например, у вас формируется ссылка вида:
/stat/country/city/
а вам необходим запрос такого вида:
/stat.php?country=value1&city=value=2
Следовательно надо создать приблизительно такой запрос:
RewriteRule ^/stat/(.*)/(.*)/$ /stat.php?country=$1&city=$2

Вообще литературы довольно много, но вся ее суть сводится к регулярным выражениям, поэтому прежде всего RegExp, а потом уже осваивать mod_rewrite! Но все равно - ссылки формировать придется вручную!

Роман Рублевич
30.09.2006, 03:20
http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html
http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html
Лучшая инструкция по мнению большинства.

Zuzle
01.10.2006, 01:34
ya.ru есть подробнейшая документация на ту тему. Сначала пробуй сам искать, потом флуди на форуме.

TSM
01.10.2006, 18:33
Вообще нужно убрать .php из адреса и прибавить / на конце. Буду признателен за помощь.

Можно просто написать

<Directory my_directory_path>
DirectoryIndex my_php_script.php
</Directiory>

Шуранов
01.10.2006, 18:59
Можно просто написать

<Directory my_directory_path>
DirectoryIndex my_php_script.php
</Directiory>
А если в директории лежит более одного файла? Просто изменением индексного файла такая проблема не решается. mod_rewrite нужен. Вы же не будете создавать кучу папок по всему серверу? Это перебор.

Joe
02.10.2006, 21:03
Шуранов и Bobych спасибо! phpclub - отлично!

Имхо, начать учится можно только на примерах... С нулевыми знаниями гулять по сайтам и читать непонятноые слова - бесполезно.

Joe
28.10.2006, 20:58
Разобрался с темой! Но на пути изучения появился вопрос:

У меня есть страница contacts.php, я пишу строку в .htaccess'e:
RewriteRule ^([a-z]+)\.html$ /index.php?page=$1

Далее $page должен схватываться и включаться в шаблоне:
include $page.'.php';

Но вместо этого ОТКРЫВАЕТСЯ страница contacts.php. Такое ощущение, что сервер сначала перебирает дугие расширения, а потом уже использует .htaccess и преобразует запрос.

Кто знает что за полтергейтс?

X-Ception
28.10.2006, 23:52
Переформулируйте вопрос...
Но вместо этого ОТКРЫВАЕТСЯ страница contacts.php
Вместо чего "этого"?
Какой запрос? Какой наблюдается ответ, какая страница выдается? И какая должна выдаваться?

Шуранов
29.10.2006, 00:07
Вместо чего "этого"?
Какой запрос? Какой наблюдается ответ, какая страница выдается? И какая должна выдаваться?
Да это такой ма-а-аленький прикол. Может настройки самого mod_rewrite, может старая или, наоборот, новая версия модуля. Черт его знает, но прикол заключается в чем: вместо передачи в index.php переменной $page с параметром имени страницы, просто открывается эта страница. Где как работает - у меня такой запрос выполняется верно - данные передаются в параметр, а в данном случае - вместо передачи данных просто запускается файл. Такая вот шутка.

Роман Рублевич
29.10.2006, 01:01
Joe, если вы инклюдите файлы посредством index.php то лучше делать расширение не php, а какое-нибудь нейтральное. Например, txt. А то поисковиками заиндексируется неправильно, и будут ваши посетители у вас сайт без дизайна видеть...

Шуранов
29.10.2006, 01:04
Joe, если вы инклюдите файлы посредством index.php то лучше делать расширение не php, а какое-нибудь нейтральное. Например, txt. А то поисковиками заиндексируется неправильно, и будут ваши посетители у вас сайт без дизайна видеть...

Извиняюсь, чуть-чуть не понял, что вы имеете в виду? mod_rewrite работает прозрачно для клиента. А в правиле указано расширение .html, а не .php - так что в данном случае поисковик проиндексирует страницу именно как .html, а не .php