.htaccess url rewrite将路径插入url

时间:2014-04-07 20:01:31

标签: php .htaccess magento mod-rewrite

我正在运营一个magento网站。我注意到一些 GET 参数foo=1崩溃了其中一个扩展程序。我想抓住它并用foo=0替换它以防止foo为1。 (由于其他原因我需要foo,并且无法完全删除它)

所以我将其插入 .htaccess 文件中:

RewriteCond %{QUERY_STRING} ^foo=1(.*)$  [NC]
RewriteRule ^(.*)?foo=1$ $1foo=0 [R=301,L]

我希望这会改写: example.com/abc.html/?foo=1 至: example.com/abc.html/?foo=0

相反,它将其重写为: example.com/home/[folder]/public_html/abc.html/?foo=0

(它将文件位置路径从主页添加到文件 abc.html .Htaccess文件位于 public_html

有人可以告诉我如何防止这种情况吗?

2 个答案:

答案 0 :(得分:1)

/之前添加$1foo=0 [R=301,L]应解决此问题。所以它会是

RewriteCond %{QUERY_STRING} ^foo=1(.*)$  [NC]
RewriteRule ^(.*)?foo=1$ /$1foo=0 [R=301,L]

答案 1 :(得分:1)

这应该适合你:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+([^?]+)\?(foo)=1[&\s] [NC]
RewriteRule ^ /%1?%2=0 [R=301,L]