Я пытаюсь установить перенаправление в моей конфигурации VirtualHost для моего сайта. Пока что я могу перенаправить трафик, не связанный с www, на адрес www следующим образом:
<VirtualHost: *:80>
ServerAlias www.gcbeauce.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^guidedescommercesdebeauce\.com$ [NC]
RewriteRule ^(.*)$ http://www.guidedescommercesdebeauce.com$1 [R=301,L]
Но я также хочу перенаправить старый домен на новый. Я попытался добавить:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^guidedescommercesdebeauce\.com$ [NC]
RewriteCond %{HTTP_HOST} ^gcbeauce\.com$ [NC]
RewriteRule ^(.*)$ http://www.guidedescommercesdebeauce.com$1 [R=301,L]
Но ничего не происходит.
Я что-то здесь упускаю?
Вы должны отменить матч. Попробуйте это:
RewriteCond ${HTTP_HOST} !^www\.guidedescommercesdebeauce\.com$ [NC]
RewriteRule ^(.*)$ http://www.guidedescommercesdebeauce.com$1 [R=301,QSA,L]
Обратите внимание на восклицательный знак в RewriteCond
. Также обратите внимание, что это приведет к созданию одного канонического доменного имени. Я предполагаю, что это то, что вы хотите. Если нет, то вам придется перечислить доменные имена для перенаправления. В этом случае обязательно добавьте [OR]
в конец RewriteCond
.
Я также добавил [QSA]
к вашим флагам. Таким образом, любая существующая строка запроса будет сохранена.
Наконец, вам настоятельно рекомендуется внимательно прочитать документацию по mod_rewrite, поскольку в ней есть ответы на этот и многие другие вопросы.
Отсутствует слеш до $ 1?
RewriteEngine On
RewriteRule ^(.*)$ http://www.new-domain.com/$1 [R=301,L]
Если вы используете Apache 2.4, вам не нужно включать модуль apache для перезаписи: