301重定向与htaccess无法正常工作

时间:2016-09-20 11:19:02

标签: php .htaccess redirect

http://www.domain.com/thanks.php?orderid=MTI0NjAx

以上网址应重定向到 http://www.domain.com/order-confirmation/MTI0NjAx

但现在它重定向到下面的网址就像...... http://www.domain.com/order-confirmation/MTI0NjAx?orderid=MTI0NjAx

我正在使用以下代码,但无法正常工作......

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]

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

1 个答案:

答案 0 :(得分:0)

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

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(查询字符串放弃)标记来跳过先前的查询字符串。