我真的希望你能帮助我(这让我发疯)。 我已经尝试了几十个设置,似乎没有任何工作,谷歌搜索自己头晕并尝试了许多不同的设置,但这一切似乎导致循环或服务器错误。
这是需要发生的事情:
我有一个网站附加了多个域名。我需要的是,当有人通过" 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¤cy=3 [L,R=301]
希望你能提供帮助,
干杯!
答案 0 :(得分:1)
这将导致循环:
RewriteCond %{HTTP_HOST} ^www.domain.co.uk$
RewriteRule ^$ http://www.domain.co.uk/?lang=en&noredir=1¤cy=3 [L,R=301]
因为您只检查主机标头。每次重定向触发时,它将返回到服务器,主机标头为www.domain.co.uk
并再次重定向。您还需要检查查询字符串,并且只有在它与您发送的内容不匹配时才重定向:
RewriteCond %{HTTP_HOST} ^www.domain.co.uk$
RewrteCond %{QUERY_STRING} !lang=en&noredir=1¤cy=3
RewriteRule ^$ http://www.domain.co.uk/?lang=en&noredir=1¤cy=3 [L,R=301]