Назад | Перейти на главную страницу

RewriteRule для всех VirtualHosts в Ubuntu 14.04?

После a2enmod rewrite, Я написал файл /etc/apache2/conf-available/myspecific_rewrite.conf :

RewriteEngine on
RewriteRule ^/test(/.*)?$ http://anothersite.tld/test$1 [R]
RewriteRule ^/test2(/.*)?$ http://anothersite2.tld/test [R]

Затем я a2enconf myspecific_rewrite и правильная символическая ссылка создается в /etc/apache2/conf-enabled.

Проблема в том, что эта конфигурация не работает: перезапись не активна.

Я хочу, чтобы эта перезапись была активна для всех моих виртуальных хостов. Этот файл, который я написал, определяет RewriteRules за пределами <VirtualHost>... есть ли способ заставить его работать?

вы могли бы использовать include в каждой директиве VirtualHost, указывающей на файл.

Источник информации: SO комментарий Джереми Бурка

альтернатива, которую вы можете использовать

RewriteEngine On

RewriteOptions Inherit

на каждом VirtualHost

Источник: тот же вопрос и Документы Apache для mod_rewrite

Вот что я наконец сделал: использовал mod_aliasс Redirect и RedirectMatch директивы.

Вот мой файл conf:

Redirect permanent /test http://anothersite.tld/test
RedirectMatch permanent ^/test2(/.*)?$ http://anothersite2.tld/test

Преимущество: мне больше не нужен mod_rewrite.