Описание тега mod-rewrite

Модуль перезаписи URL для веб-сервера Apache. Он обычно используется для так называемых "красивых" URL-адресов, но также обеспечивает мощность и гибкость для выполнения различных задач обработки запросов, помимо простых замен.

Введение в mod_rewrite

mod_rewrite - это модуль apache, который позволяет преобразовывать запросы на стороне сервера. Он может использоваться для выполнения как внутренних, так и внешних перенаправлений, а также может предоставлять условные перехватчики для функций, предоставляемых другими модулями (например, mod_proxy). Исчерпывающая справочная и дополнительная документация с несколькими примерами доступна на веб-сайте документации Apache, в дополнение к множеству решений общих и расширенных проблем mod_rewrite, доступных здесь.

Полное введение в mod_rewrite

Все, что вы хотели знать о правилах Mod_Rewrite, но боялись спросить?

Общие сценарии использования mod_rewrite и вопросы

Как работает 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, включая мод-перезапись кода.