Описание тега mod-rewrite
Введение в mod_rewrite
mod_rewrite - это модуль apache, который позволяет преобразовывать запросы на стороне сервера. Он может использоваться для выполнения как внутренних, так и внешних перенаправлений, а также может предоставлять условные перехватчики для функций, предоставляемых другими модулями (например, mod_proxy). Исчерпывающая справочная и дополнительная документация с несколькими примерами доступна на веб-сайте документации Apache, в дополнение к множеству решений общих и расширенных проблем mod_rewrite, доступных здесь.
Полное введение в mod_rewrite
Все, что вы хотели знать о правилах Mod_Rewrite, но боялись спросить?
Общие сценарии использования mod_rewrite и вопросы
- Как сделать так, чтобы URL-адрес типа " / page " перенаправлял на сценарий, например " /index.php/page"?
- Как скрыть расширение.html с помощью Apache mod_rewrite
- Как мне заставить пользователей посещать мое доменное имя с www?
- Как заставить пользователей заходить на мое доменное имя без www?
- Как перенаправить мой поддомен в папку?
- Как добавить существующую строку запроса к моему перезаписанному URL-адресу?
- Как преобразовать сегменты пути URL в пары ключ-значение строки запроса?
- Почему в моем файле .htaccess не работает флаг L?
- Почему в моих тестовых шаблонах не работают переменные среды?
- CSS, JS и изображения не отображаются с красивым URL-адресом
- Я хочу изменить свой URL-адрес Wordpress, но получаю ошибку Wordpress 404 Not Found
- Как мне перенаправить уродливый URL-адрес на красивый URL-адрес, а затем переписать его обратно на уродливый URL-адрес, не вызывая бесконечного цикла перенаправлений
- Как мне переписать имя на id?(где id отсутствует в запрошенном URL)
Как работает mod_rewrite?
mod_rewrite творит чудеса, применяя ряд правил и условий к запрошенному URL, выполняя замены при успешном сопоставлении. Большая часть этой работы выполняетсяRewriteRule
а также RewriteCond
директивы, которые могут быть определены в конфигурациях сервера (или виртуального хоста) или в файлах .htaccess. Это позволяет использовать mod_rewrite в различных сценариях развертывания, включая общий хостинг, где он часто устанавливается по умолчанию.
Используя доступные директивы и переменные *, можно выполнять перезапись условий для достаточно сложного набора условий, включая отрицательные регулярные выражения и буквальные совпадения. В качестве простого примера, демонстрирующего некоторые из этих функций, рассмотрите возможность выполнения внутреннего перенаправления в альтернативный индексный файл, если был запрошен поддомен:
RewriteEngine On # Turn on the engine
RewriteCond %{HTTP_HOST} =s.example.com # Test for subdomain
RewriteCond %{REQUEST_URI} !^/.+$ # Test if the request URI is empty
RewriteRule ^ /index-alt.html [QSA] # Internal rewrite with QSA flag*
* Полный список переменных доступен в RewriteCond
раздел документации. Кроме того, список флагов правил доступен в RewriteRule
раздел.
У mod_rewrite есть свои причуды, особенно когда дело доходит до различий между определением правил в конфигурации сервера и в .htaccess
файл. По возможности используйте RewriteLog
директиву, чтобы увидеть, что происходит под капотом, и, если сомневаетесь, спросите сообщество stackru!
Нужен ли мне mod_rewrite?
mod_rewrite - сложный и мощный инструмент. Таким образом, для некоторых простых вариантов использования существуют более простые, а иногда и более быстрые альтернативы. Вики- страницы Apache документируют некоторые из этих случаев использования на странице "Когда не использовать перезапись".
Задание нового вопроса о mod_rewrite
Здесь много пользователей, которые рады помочь демистифицировать mod_rewrite. Чтобы получить наилучшие ответы, рекомендуется, чтобы вопросы включали все правила, упоминание о том, определены ли они в httpd.conf или.htaccess, пример того, что должно произойти (но этого не происходит; например, "/home
должен пойти в home.php
"), и, наконец, описание того, что" не работает "с этим (например, "Apache возвращает сообщение об ошибке 404 "). Удачного переписывания!
Ресурсы и ссылки
- Генератор перезаписи модов - Generateit.net: предлагает простой онлайн-интерфейс для создания настраиваемых правил перезаписи для типичных ситуаций.
- htaccess tester: для тестирования вашего кода htaccess, включая мод-перезапись кода.