.htaccess URL 重写插入 URL 的路径


.htaccess url rewrite inserts path to url

我正在运行一个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

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

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

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

这应该适合您:

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