Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
Apache 301通过htaccess将旧参数名称重定向到新参数名称_Apache_.htaccess_Mod Rewrite_Redirect_Url Redirection - Fatal编程技术网

Apache 301通过htaccess将旧参数名称重定向到新参数名称

Apache 301通过htaccess将旧参数名称重定向到新参数名称,apache,.htaccess,mod-rewrite,redirect,url-redirection,Apache,.htaccess,Mod Rewrite,Redirect,Url Redirection,我刚刚更改了两个参数名,并希望将旧名称重定向到URL中任何位置具有任何值的更改名称。e、 g: product.php?colornew=anyvalue&productname=anyvalue 301重定向到: product.php?color=anyvalue&product=anyvalue 请注意,这只是一个示例,正如我所说的,这两个参数可以是URL中任何位置的任意值。尝试: RewriteEngine on RewriteCond %{THE_REQUEST}

我刚刚更改了两个参数名,并希望将旧名称重定向到URL中任何位置具有任何值的更改名称。e、 g:

product.php?colornew=anyvalue&productname=anyvalue
301重定向到:

product.php?color=anyvalue&product=anyvalue
请注意,这只是一个示例,正如我所说的,这两个参数可以是URL中任何位置的任意值。

尝试:

RewriteEngine on

RewriteCond %{THE_REQUEST} \?colornew=([^&]+)&productname=([^&\s]+)
RewriteRule ^ %{REQUEST_URI}?color=%1&product=%2 [QSA,NC,NE,L,R=301]

您可以使用此代码重命名任何URL中的查询参数:

RewriteEngine On

# rename query parameter colornew=>color
RewriteCond %{QUERY_STRING} ^(.*&)?colornew=([^&]*)(&.*)?$ [NC]
RewriteRule ^ %{REQUEST_URI}?%1color=%2%3 [NC]

# rename query parameter productname=>product
RewriteCond %{QUERY_STRING} ^(.*&)?productname=([^&]*)(&.*)?$ [NC]
RewriteRule ^ %{REQUEST_URI}?%1product=%2%3 [NC,NE,L,R=302]

可能与Sumurai8的链接答案重复?是的,但找不到我的答案Yet可以帮助我找出这与该问题的关系吗?据我所知,问题是删除了参数名,只保留了值。但我的问题是将旧的参数名重定向到新的参数名。我想要301重定向,同时您的代码更改了特殊字符。我认为您需要使用NEChange R to R=301,是的,如果您的查询字符串值包含一些特殊字符,则必须使用NE标志。请您在代码中更改它们,以便更好地参考,谢谢!我真的不知道怎么做,你能用你的QSA标志方法完成与任何URL一起工作的代码吗。我将QUERY_字符串变量更改为_请求,因为代码产生了重定向循环错误。又是一个很棒的工作!我只是想知道我是否会从你的代码中删除:“product\.php$”,如果我想让你的代码在任何页面上处理这项工作,这不是更好吗?哦,是的,这绝对好,你可以使用
RewriteRule^%{REQUEST\u URI}?%1product=%2%3[NC,NE,L,R=302]
来创建这个通用的“一网打尽”规则。