使用url末尾的参数将url重定向到特定语言的正确方法

时间:2014-06-21 23:05:55

标签: regex .htaccess mod-rewrite redirect

我需要的是使用htaccess重定向已经包含一些谷歌分析参数的网址,并重定向它在网址末尾添加语言参数。到目前为止,我试过这个没有运气,但我知道它在某些方面是错误的:

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^random?$1 http://www.domain.com/random?$1&language=french [R=301,QSA]

我尝试1美元,我不知道这是否正确,其目的是包括所有参数,如utm_source = 1& utm_medium = 2,之后我需要包括语言参数,因此重定向的网址应该看起来像http://www.domain.com/random?utm_source=1&utm_medium=2&language=french

达到我需要的正确方法是什么?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

返回引用

在您的规则中,$1是对尚未存在的捕获组的反向引用。

请改为尝试:

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteCond %{QUERY_STRING} !^.*language=french
RewriteRule ^(random.*) $1?language=french [R=301,QSA,L]
  • 在网址路径的开头^(random.*)匹配random和网址的其余部分。 (所以我们只重写以random开头的网址...是你想要的?)
  • 我们使用反向引用$1重写,然后是查询字符串?language=french
  • QSA标志确保添加现有的查询字符串参数。