Модуль перезаписи 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, чтобы увидеть, что происходит в капот, и если есть сомнения, спросите сообщество переполнения стека!

Мне нужен mod_rewrite?

Mod_rewrite - сложный и мощный инструмент. Таким образом, для некоторых простых вариантов использования существуют более простые и иногда более быстрые альтернативы. Вики Apache описывает некоторые из этих вариантов использования на своей странице «Не использовать переписывать».

Задать новый вопрос mod_rewrite

Здесь есть много пользователей, которые с радостью помогут демистифицировать mod_rewrite. Чтобы получить наилучшие возможные ответы, рекомендуется, чтобы вопросы включали все правила, упоминание того, определены ли они в httpd.conf или .htaccess, пример того, что должно произойти (но не происходит; например, "{{X0} } следует перейти к home.php ") и, наконец, описанию того, что« не работает »в этом (например,« Apache возвращает сообщение об ошибке 404 »). Счастливого переписывания!

Ресурсы и ссылки