Помогите разобраться с mod_rewrite

Статус
В этой теме нельзя размещать новые ответы.

MyCreature

Постоялец
Регистрация
5 Окт 2008
Сообщения
83
Реакции
5
Не могу понять суть перенаправлений. Помогите)

Пример: сайт имеет структуру - site.ru/index.php?page=catalog
Грузится index.php , через GET получаем значение page и в зависимости от этого выводим данные.

Решили сделать ЧПУ: site.ru/catalog
Пишем htaccess:
RewriteBase /
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 [L]
Сейчас вызываем site.ru/catalog , незаметно срабатывает перенаправление site.ru/index.php?page=catalog
, НО зачем сейчас перенаправлять на site.ru/index.php?page=catalog , а не просто на site.ru/index.php. Ведь сейчас из строки не вытащить данные GET'ом???
 
Ведь сейчас из строки не вытащить данные GET'ом???
А ты проверял, что GET не работает? ;)

Можно, конечно, и просто кидать все запросы на index.php, а в нем ручками парсить $_SERVER["REQUEST_URI"], но зачем если есть mod_rewrite, который приведет несколько форм написания урлов к одной (уже известной движку)?

Вся прелесть в том, что с помощью mod_rewrite можно натянуть ЧПУ на уже существующий движок только редактированием .htaccess и переделкой механизма формирования ссылок.
 
Все! На третий день понял!
С толку сбила статья: В ней как раз говориться про такое разбиение $_SERVER["REQUEST_URI"].

А на самом деле все гораздо легче: Во флагах указать [QSA,L] и GET заработает!

Вот что пришлось прочитать, перед тем как разобрался во всем. От простого к сложному:


и авто генераторы статических URL:
 
за предачу GET запросов отвечает модификатор [QSA], а [L] означает, что если адрес удовлетворяет правилу, то дальше проверка не выполняется.
 
за предачу GET запросов отвечает модификатор [QSA], а [L] означает, что если адрес удовлетворяет правилу, то дальше проверка не выполняется.

Уточню ... [QSA] передает параметры которые после ?
 
QSA (qsappend) добавляет исходные параметры запроса (query string) к замене. Если замена не включает в себя новые параметры запроса, то исходные параметры запроса добавляются автоматически. Если же включает, то без флага QSA исходные параметры запроса будут утеряны.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху