Правило не перенаправляет .co.uk на .com - PullRequest
2 голосов
/ 14 ноября 2011

Я пытался получить свой сайт, когда посетитель переходит на .co.uk для автоматического перенаправления на .com. А также если они перейдут на domain.com, чтобы попасть на www.domain.com

У меня есть код ниже в моем httpd.conf. Кажется, он работает с domain.com до www.domain.com, но не domain.co.uk или www.domain.co.uk до www.domain.com

RewriteEngine on
RewriteBase /      
RewriteCond %{http_host} ^domain.com [NC,OR]
RewriteCond %{http_host} ^domain.co.uk [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,NC]

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Если ваши правила перезаписи находятся в файле htaccess, это должно работать. Если они находятся в файле vhost (или в самом Apache httpd.conf), попробуйте удалить /.

И старайтесь всегда быть чувствительными к регистру (привыкните, потому что большинство языков чувствительны к регистру, это хорошая привычка):


Если в .htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com [NC,OR]
RewriteCond %{HTTP_HOST} domain.co.uk [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,NC]

Если в файле vhost или httpd.conf:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com [NC,OR]
RewriteCond %{HTTP_HOST} domain.co.uk [NC]
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301,NC]

И, пожалуйста, попробуйте использовать директиву RewriteLog: она поможет вам отследить такие проблемы:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

Скажите, работает ли он?

0 голосов
/ 14 ноября 2011

Имя HTTP_HOST чувствительно к регистру?В документации RewriteCond всегда указывается HTTP_HOST, а не http_hostФлаг NC в этом не поможет, поскольку он применяется к строковым значениям, а не к именам переменных.

...