Где я могу поместить 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