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
Php 301重定向无法使用htaccess正常工作_Php_.htaccess_Redirect - Fatal编程技术网

Php 301重定向无法使用htaccess正常工作

Php 301重定向无法使用htaccess正常工作,php,.htaccess,redirect,Php,.htaccess,Redirect,上面的url应该重定向到 但现在它重定向到下面的url像。。。 我正在使用下面的代码,但工作不正常 RewriteCond %{THE_REQUEST} /thanks\.php\?orderid=([^&\s]+) [NC] RewriteRule ^ /order-confirmation/%1 [NC,R=301,L] RewriteRule ^order-confirmation/([^/]+)$ /thanks\.php\?orderid=$1 [NC,L] 任何人都可以

上面的url应该重定向到

但现在它重定向到下面的url像。。。

我正在使用下面的代码,但工作不正常

RewriteCond %{THE_REQUEST} /thanks\.php\?orderid=([^&\s]+) [NC]
RewriteRule ^ /order-confirmation/%1 [NC,R=301,L]
RewriteRule ^order-confirmation/([^/]+)$ /thanks\.php\?orderid=$1 [NC,L]

任何人都可以帮助我,我该怎么做?

您需要在目标URL中使用
来去除前面的查询字符串:

RewriteCond %{THE_REQUEST} /thanks\.php\?orderid=([^&\s]+) [NC]
RewriteRule ^ /order-confirmation/%1? [R=301,L]

RewriteRule ^order-confirmation/([^/]+)$ /thanks\.php\?orderid=$1 [NC,L,QSA]

从Apache 2.4开始,您还可以使用
QSD
(查询字符串放弃)标志来删除以前的查询字符串。

您需要在目标URL中使用
删除以前的查询字符串:

RewriteCond %{THE_REQUEST} /thanks\.php\?orderid=([^&\s]+) [NC]
RewriteRule ^ /order-confirmation/%1? [R=301,L]

RewriteRule ^order-confirmation/([^/]+)$ /thanks\.php\?orderid=$1 [NC,L,QSA]

从Apache 2.4开始,您还可以使用
QSD
(查询字符串丢弃)标志来跳出以前的查询字符串。

我已经添加了您的编码,仍然会出现相同的问题,这可能是由于您的浏览器缓存造成的。在测试更改之前完全清除浏览器缓存。是的,清除缓存后,现在工作正常,谢谢。我已经添加了编码,仍然会出现相同的问题,这可能是由于浏览器缓存造成的。在测试更改之前完全清除浏览器缓存。是的,清除缓存后,现在工作正常,谢谢