Где я могу поместить RewriteRules в Apache2 без использования файлов .htaccess?
Я хочу настроить правило mod_rewrite без использования файлов .htaccess. Когда я помещаю правила в файлы .htaccess, они работают нормально, но я предпочел бы оставить всю конфигурацию в файле конфигурации /etc/apache 2/sites-available/[site name].
Когда я помещаю те же RewriteRules в директивы VirtualHost или Directory, ничего не работает. Что я делаю не так? Вот пример из моего конфигурационного файла VirtualHost:
<Directory />
Options FollowSymLinks
# AllowOverride is on for the .htaccess files to work
AllowOverride All
RewriteEngine On
RewriteRule ^oldsite\.php$ newsite.php
</Directory>
Я думаю, что могу игнорировать некоторую директиву в файле apache2.conf, но я не уверен. Помогите.:)
Ответы
Ответ 1
Вы используете шаблон RewriteRule
, который предназначен для файла .htaccess. Причина:
При использовании механизма перезаписи в файлах .htaccess префикс для каждого каталога (который всегда одинаковый для определенного каталога) автоматически удаляется для сопоставления шаблонов и автоматически добавляется после того, как была выполнена замена.
Итак, попробуйте это правило с полным URL-адресом:
RewriteRule ^/oldsite\.php$ /newsite.php