将301静态变量lang URL重定向到另一个域

时间:2017-05-09 08:49:35

标签: .htaccess redirect parameters static dns

在网站重新设计的背景下,我想使用lang将带有.htaccess param的静态网址重定向到另一个域的静态网址。 URL构建如下:

www.example.com/first-page/?lang=it  >>  www.example.it/prima-pagina/
www.example.com/first-page/?lang=fr  >>  www.example.fr/premiere-page/

www.example.com/another-page/?lang=it  >>  www.example.it/unaltra-pagina/
www.example.com/another-page/?lang=fr  >>  www.example.fr/autre-page/

www.example.com/folder/last-page/?lang=it  >>  www.example.it/record/ultima-pagina/
www.example.com/folder/last-page/?lang=fr  >>  www.mydomain.fr/dossier/derniere-page/

我已经尝试过简单的重定向,例如RedirectMatch 301 ....... 还有更RewriteCondRewriteRule的更复杂的网址,均未成功...

1 个答案:

答案 0 :(得分:0)

您需要使用mod_rewrite(RewriteCond / RewriteRule)才能匹配网址的查询字符串部分。

由于源网址和目标网址的网址路径之间似乎没有任何相关性,并且每种语言的网址路径看起来都不相同,因此您需要在{{1}中单独执行每项操作。 }。

例如:

.htaccess

以下仅涵盖前两个重定向。

www.example.com/first-page/?lang=it  >>  www.example.it/prima-pagina/
www.example.com/first-page/?lang=fr  >>  www.example.fr/premiere-page/

带括号的子模式(例如RewriteEngine On RewriteCond %{QUERY_STRING} ^lang=(it) RewriteRule ^first-page/$ http://www.example.%1/prima-pagina/? [R,L] RewriteCond %{QUERY_STRING} ^lang=(fr) RewriteRule ^first-page/$ http://www.example.%1/premiere-page/? [R,L] )是一个捕获组,允许对(fr)形式进行反向引用以引用{{1}中的内容(例如%1) } 替换。如果您不使用括号,则无法执行此操作。

替换末尾的fr会从请求中删除查询字符串。

如果这些是永久重定向,请将RewriteRule更改为?,但只有在您确认它正常工作后才会更改。 (301s被浏览器严格缓存。)

更新:如果网址参数值与域名TLD不匹配,那么您只需要明确并命名即可。例如:

R