Как работает rewriterule в htaccess- основные понятия

Как сделать ЧПУ на сайте?
Рассмотрим на примерах (предположим у вас есть сайт site.ru):

RewriteRule ^test/?$ index.php?c=testik

Если пользователь попытается открыть ваш сайт через site.ru/test/ или site.ru/test то это правило вместо site.ru/test/ откроет страницу site.ru/index.php а в $_GET попадет только [с] => testik .

Второй способ глобальный, он поможет сделать ЧПУ на сайте с помощью кода PHP.

RewriteRule .* index.php?queryurl=$0


Здесь все что бы ни открыл пользователь вашего сайта кроме index.php будет перехватываться благодаря .* и перенаправлятся в переменную $_GET['queryurl'] - за это отвечает $0 который означает .*
Так как у нас нет скобок, иначе можно расширять с помощью $1, $2 в зависимости от количества скобок в регулярке.
Но сейчас ВСЁ что вы будете вводить - вы все равно будете открыть index.php и в гете получать только index.php, а чтобы получить все параметры запроса, нужно в конце добавить [QSA].


RewriteRule .* index.php?queryurl=$0 [QSA]


Теперь если пользователь откроет ваш сайт через site.ru/admin/login.php, то будет перенаправление на index.php и в ГЕТе вы получите $_GET['queryurl'] = admin/login.php

RewriteBase прописывать не нужно, он по умолчанию будет нормальным, такой где и лежит ваш файл хтаксес.

Но теперь может возникнуть проблема, что не будут грузится ни картинки, ни стили, ни подгружаемые файлы скриптов.
Чтобы это исправить добавьте перед реврайтрул:
RewriteCond %{REQUEST_FILENAME} !-f

Это правило разрешает доступ ко всем прямым файлам (то есть картинки, скрипты, стили ксс).
С ключиком -d разрешаются директории, но в нашем случае, мы их специально и закрыли, чтобы сделать ЧПУ. Поэтому только -f



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы