RewriteCond не работает для удаления www. с субдомена URL - PullRequest
1 голос
/ 04 марта 2012
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.new.domain.com [NC]
RewriteRule ^(.*)$ http://new.domain.com/$1 [L,R=301]

почему при вводе http://www.new.domain.com не перенаправляется на http://new.domain.com?

.htaccess файл находится в нужной папке (у него больше перезаписываемых секунд, и они работают)

1 Ответ

2 голосов
/ 04 марта 2012

Синтаксис регулярного выражения в RewriteCond немного нарушен: правильный способ проверки на строгое равенство с www.new.domain.com (с точностью до различий в случае) - либо

RewriteCond %{HTTP_HOST} ^www\.new\.domain\.com$ [NC]

или

RewriteCond %{HTTP_HOST} =www.new.domain.com [NC]

Тем не менее, эти ошибки не должны не мешать работе вашего правила перезаписи: ваш исходный RewriteCond будет соответствовать www.new.domain.com просто отлично, он также соответствует некоторым другим строкам (например, wwwXnewYdomainZcomFOOBAR). На самом деле у меня есть очень похожий набор правил в моем собственном файле .htaccess, и они прекрасно работают:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^vyznev\.net$
RewriteCond %{HTTP_HOST}  ^(www\.)?vyznev\.net$ [NC]
RewriteRule ^(.*) http://vyznev.net/$1 [NS,L,R=permanent]

Большинство различий между вашим кодом и моим чисто косметическое. Единственная потенциально значимая проблема, которую я вижу, если у вас нет директивы RewriteBase; Вы должны обязательно добавить один, чтобы избежать потенциальных проблем позже. Тем не менее, насколько я могу судить, отсутствие такового не должно помешать вам получить по крайней мере некоторое перенаправление , даже если оно не соответствует ожидаемому URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...