Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 将301静态变量lang URL重定向到另一个域_.htaccess_Redirect_Parameters_Static_Dns - Fatal编程技术网

.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/$