htaccess重定向到同一域上的特定网址(没有循环)

时间:2015-08-06 07:32:32

标签: apache .htaccess redirect

我真的希望你能帮助我(这让我发疯)。 我已经尝试了几十个设置,似乎没有任何工作,谷歌搜索自己头晕并尝试了许多不同的设置,但这一切似乎导致循环或服务器错误。

这是需要发生的事情:

我有一个网站附加了多个域名。我需要的是,当有人通过" domain.co.uk" -domain访问网站时,会重定向到正确的语言参数(等等)。

非常具体:访问" www.domain.co.uk"访问者必须被重定向到" www.domain.co.uk?lang = en& noredir = 1& currency = 3"

我已确定www存在于此:

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

问题是(我认为)在同一个域内重定向而不会导致循环。

我尝试过这样的事情,但没有结果:

RewriteCond %{HTTP_HOST} ^www.domain.co.uk$
RewriteRule ^$ http://www.domain.co.uk/?lang=en&noredir=1&currency=3 [L,R=301]

希望你能提供帮助,

干杯!

1 个答案:

答案 0 :(得分:1)

这将导致循环:

RewriteCond %{HTTP_HOST} ^www.domain.co.uk$
RewriteRule ^$ http://www.domain.co.uk/?lang=en&noredir=1&currency=3 [L,R=301]

因为您只检查主机标头。每次重定向触发时,它将返回到服务器,主机标头为www.domain.co.uk并再次重定向。您还需要检查查询字符串,并且只有在它与您发送的内容不匹配时才重定向:

RewriteCond %{HTTP_HOST} ^www.domain.co.uk$
RewrteCond %{QUERY_STRING} !lang=en&noredir=1&currency=3
RewriteRule ^$ http://www.domain.co.uk/?lang=en&noredir=1&currency=3 [L,R=301]