.htaccess 将301静态变量lang URL重定向到另一个域
在重新设计网站时,我想使用.htaccess 将301静态变量lang URL重定向到另一个域,.htaccess,redirect,parameters,static,dns,.htaccess,Redirect,Parameters,Static,Dns,在重新设计网站时,我想使用.htaccess将带有langparam的静态URL重定向到另一个域上的静态URL。 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-pag
.htaccess
将带有lang
param的静态URL重定向到另一个域上的静态URL。
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/
我已经尝试过一些简单的重定向,比如redirectmatch301
。。。。。。。
还有更复杂的URL和
RewriteCond
和RewriteRule
,都没有成功…您需要使用mod_rewrite(RewriteCond
/RewriteRule
)来匹配URL的查询字符串部分
由于源URL和目标URL的URL路径之间似乎没有任何关联,而且每种语言的URL路径似乎不同,因此您需要在.htaccess
中分别执行每种操作
例如:
RewriteCond %{QUERY_STRING} ^lang=aa
RewriteRule ^first-page/$ http://www.example.bb/prima-pagina/? [R,L]
下面仅介绍前两个重定向
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
的反向引用引用重写规则中的内容(例如fr
)。如果不使用括号,则无法执行此操作
替换末尾的?
从请求中删除查询字符串
如果这些是永久重定向,则将R
更改为R=301
,但仅在确认其正常工作后。(浏览器会硬缓存301s。)
更新:如果URL参数值与域TLD不匹配,则只需显式命名即可。例如:
RewriteCond %{QUERY_STRING} ^lang=aa
RewriteRule ^first-page/$ http://www.example.bb/prima-pagina/? [R,L]
您需要使用mod_rewrite(RewriteCond
/RewriteRule
)来匹配URL的查询字符串部分
由于源URL和目标URL的URL路径之间似乎没有任何关联,而且每种语言的URL路径似乎不同,因此您需要在.htaccess
中分别执行每种操作
例如:
RewriteCond %{QUERY_STRING} ^lang=aa
RewriteRule ^first-page/$ http://www.example.bb/prima-pagina/? [R,L]
下面仅介绍前两个重定向
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
的反向引用引用重写规则中的内容(例如fr
)。如果不使用括号,则无法执行此操作
替换末尾的?
从请求中删除查询字符串
如果这些是永久重定向,则将R
更改为R=301
,但仅在确认其正常工作后。(浏览器会硬缓存301s。)
更新:如果URL参数值与域TLD不匹配,则只需显式命名即可。例如:
RewriteCond %{QUERY_STRING} ^lang=aa
RewriteRule ^first-page/$ http://www.example.bb/prima-pagina/? [R,L]
你好谢谢你的回复。很明显它不起作用。什么也没发生。我试过使用或不使用“子文件夹”,在langu参数周围使用和不使用“(“and”)”。我还尝试删除“%1”并用域扩展替换它。-Plus:如果lang参数不等于域扩展名,我该怎么办?您的.htaccess
文件中是否有其他指令?还有其他.htaccess
文件吗?是否已安装/启用mod_rewrite?是否允许.htaccess
文件?我已经更新了关于lang param与domain ext不同的答案——在这种情况下,您只需要指定两者(没有快捷方式)。还添加了更多的信息来解释正则表达式(即(
,)
和%1
)。再次。是的,我的.htaccess
文件中已经有指令,用于Worpress。我试图将您的重写规则放入
区域,但没有成功。但这些主页似乎是有效的:RewriteCond%{QUERY\u STRING}^lang=en RewriteRule^http://www.domain .com/?[R=301,L]
但不包括内部页面。^first page/$
的语法正确吗?我要重写的URL如下:http://www.domain .com/our skills/skill one/?lang=en
这些指令需要在任何现有WordPress指令之前执行。对于这样的URL路径,RewriteRule
模式将是^our skills/skill one/$
Hi。谢谢你的回复。很明显它不起作用。什么也没发生。我试过使用或不使用“子文件夹”,在langu参数周围使用和不使用“(“and”)”。我还尝试删除“%1”并用域扩展替换它。-Plus:如果lang参数不等于域扩展名,我该怎么办?您的.htaccess
文件中是否有其他指令?还有其他.htaccess
文件吗?是否已安装/启用mod_rewrite?是否允许.htaccess
文件?我已经更新了关于lang param与domain ext不同的答案——在这种情况下,您只需要指定两者(没有快捷方式)。还添加了更多的信息来解释正则表达式(即(
,)
和%1
)。再次。是的,我的.htaccess
文件中已经有指令,用于Worpress。我试图将您的重写规则放入
区域,但没有成功。但这些主页似乎是有效的:RewriteCond%{QUERY\u STRING}^lang=en RewriteRule^http://www.domain .com/?[R=301,L]
但不包括内部页面。^first page/$
的语法正确吗?我要重写的URL如下:http://www.domain .com/our skills/skill one/?lang=en
这些指令需要在任何现有WordPress指令之前执行。对于这样的URL路径,RewriteRule
模式将是^our skills/skill one/$