Почему им предлагают:
Предполагается, что вы добавите Options +FollowSymlinks
, потому что для работы mod_rewrite необходимо, чтобы была включена следующая символьная ссылка, и есть вероятность, что, хотя вам может быть разрешено ее включить, она не будет основная конфигурация сервера. Я подозреваю, что причина, по которой необходимо следовать символическим ссылкам, заключается в том, что модуль делает несколько вызовов на apr_stat()
, что похоже на необходимость следовать символическим ссылкам для получения информации о файле во всех случаях.
Что касается RewriteBase
, это обычно не требуется. Документация продолжается об этом , но, поскольку файлы большинства людей do живут где-то под DocumentRoot
, обычно это служит цели, только если вы перенаправляете внешне, и вы используете URL-адреса, относящиеся к каталогу. Чтобы проиллюстрировать, что я имею в виду, рассмотрим следующее:
RewriteEngine On
RewriteRule ^redirect index.html [R,L]
Запрос example.com / redirect приведет к внешнему перенаправлению на example.com / full / path / to / web / root / index.html . Причина этого заключается в том, что перед обработкой перенаправления mod_rewrite повторно добавляет текущий путь к каталогу (значение по умолчанию RewriteBase
). Если вы изменили RewriteBase
на /
, то информация о пути будет заменена этой строкой, поэтому запрос для index.html теперь будет запросом для / index.html .
Обратите внимание, что вы могли просто сделать это явно и при замене, независимо от значения RewriteBase
:
RewriteEngine On
RewriteRule ^redirect /index.html [R,L]
... работает, как задумано, например. Однако, если у вас есть много правил, которым нужна общая база и которые перемещаются между каталогами, или ваш контент не находится в корневом каталоге, было бы полезно установить в этом случае RewriteBase
.
Риск их не использовать:
Нет абсолютно никакого риска для безопасности, если вы не укажете Options +FollowSymlinks
, потому что если вы этого не сделаете, и это не задано конфигурацией основного сервера, mod_rewrite всегда вернет 403 Запрещено. Это довольно проблематично для людей, пытающихся просматривать ваш контент, но это определенно не дает им никакой расширенной возможности использовать ваш код.
Не задано RewriteBase
может раскрыть путь к вашему веб-контенту, если в одном из ваших файлов .htaccess был неправильно настроен набор правил, но я не уверен, что есть основания полагать, что это угроза безопасности.