Mod_rewrite 删除 301 重定向中的参数

Mod_rewrite 删除 301 重定向中的参数

我该如何重写:

http://www.example.com/foo.html?order=desc&limit=all&something=else

http://www.example.com/foo.html?order=desc&something=else

我想删除所有实例,limit=all无论 url 中有多少其他参数。

我努力了:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{QUERY_STRING} ^(.*&)&limit=all(&.*)?$ [NC]
RewriteRule ^foo\.html$ /foo\.html\?%1%2 [R=301,L]

答案1

您有^(.*&)&limit=all(&.*)?$在限制之前连续两个“与”符号。

由于您确定在限制的两边始终会有参数=全部,因此将其更改为^(.*&)limit=all&(.*)$

答案2

经过一些尝试后,我能够通过以下方式实现这一目标:

RewriteCond %{QUERY_STRING} ^(.*)limit=all\&(.*)$ 
RewriteRule ^foo\.html$ http://www.example.com/foo\.html?$1%1%2 [R=301,L]

谢谢克里斯删除“&”符号的建议

相关内容