Apache htaccess重定向到同一域上的特定url(无循环)
我真的希望你能帮我(这让我发疯)。 我尝试了几十种设置,但似乎都不起作用,用谷歌搜索我自己的头晕,并尝试了许多不同的设置,但这一切似乎都会导致循环或服务器错误 这就是需要发生的事情: 我有一个网站与多个域连接到它。我需要的是,当有人通过“domain.co.uk”域访问网站时,会重定向到正确的语言参数(以及其他参数) 具体来说:通过“www.domain.co.uk”访问时,必须将访问者重定向到“www.domain.co.uk?lang=en&noredir=1¤cy=3” 我已确保www中包含以下内容:Apache htaccess重定向到同一域上的特定url(无循环),apache,.htaccess,redirect,Apache,.htaccess,Redirect,我真的希望你能帮我(这让我发疯)。 我尝试了几十种设置,但似乎都不起作用,用谷歌搜索我自己的头晕,并尝试了许多不同的设置,但这一切似乎都会导致循环或服务器错误 这就是需要发生的事情: 我有一个网站与多个域连接到它。我需要的是,当有人通过“domain.co.uk”域访问网站时,会重定向到正确的语言参数(以及其他参数) 具体来说:通过“www.domain.co.uk”访问时,必须将访问者重定向到“www.domain.co.uk?lang=en&noredir=1¤cy=3” 我已确
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]
希望你能帮忙
干杯 这将导致循环:
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]
因此,您可能需要检查查询字符串是否已经是要重定向到的目标地址的字符串。添加另一个
RewriteCond
可以帮助实现这一点。我尝试过这样的方法:RewriteCond%{QUERY\u STRING}^“lang=en”$但它不起作用。我的语法错了吗?您的查询字符串不是“lang=en”
。引号在那里做什么?什么是^
和$
意思很清楚?我试过了,但它导致了一个服务器错误:RewriteCond%{HTTP\u HOST}^www.domain.co.uk$RewriteCond%{QUERY\u STRING}!^?lang=en&noredir=1¤cy=3$RewriteRule^$[L,R=301]不客气。如果你觉得有帮助,请告诉我