Apache 规则不将.co.uk重定向到.com

Apache 规则不将.co.uk重定向到.com,apache,mod-rewrite,url-rewriting,Apache,Mod Rewrite,Url Rewriting,我一直在尝试获取我的网站,当一个访问者转到.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

我一直在尝试获取我的网站,当一个访问者转到.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]

HTTP_主机的名称是否区分大小写?始终将其列为HTTP\U主机,而不是HTTP\U主机。NC标志对此没有帮助,因为它应用于字符串值,而不是变量名。

如果您的重写规则在htaccess文件中,这应该可以工作。如果它们位于vhost文件(或Apache httpd.conf本身)中,请尝试删除
/

尽量区分大小写(要习惯,因为大多数语言都区分大小写,这是一个好习惯):


如果在
.htaccess
中:
如果在
vhost
httpd.conf
文件中: 请尝试使用
RewriteLog
指令:它可以帮助您追踪此类问题:

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

告诉我它是否有效。

试过改成
RewriteCond%{HTTP\u HOST}^domain.com[NC,或]RewriteCond%{HTTP\u HOST}^domain.co.uk[NC]
但运气不好
mod\u rewrite
问题在SO和SF上同样有效,你最好还是在这里坚持下去。
RewriteBase//code>的意义是什么?我认为默认情况下“base”是
/
。如果我错了,请告诉我,但是这个指令是无用的。请不要以逗号结尾。非常感谢,从domain.co.uk之前删除了
RewriteBase/
^
,使它工作得非常好。但是我仍然必须保留/before$1,否则它错过了深度链接重定向的第一个/。
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]
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On