htaccess:尝试从url中剪切参数,保留其他可选参数

时间:2017-08-10 17:46:16

标签: regex .htaccess mod-rewrite

我正在尝试从网址中剪切参数但保留其他参数,而我从不知道该值。

www.example.com/?useless=somevalue&foo=somevalue&bar=somevalue
to =>
www.example.com/?foo=somevalue&bar=somevalue

www.example.com/?useless=somevalue
to =>
www.example.com/

www.example.com/?foo=somevalue&bar=somevalue&useless=somevalue
to =>
www.example.com/?foo=somevalue&bar=somevalue

2 个答案:

答案 0 :(得分:1)

您可以使用此规则从任何位置删除命名查询参数:

RewriteEngine On

RewriteCond %{THE_REQUEST} \?(.*&)?useless=[^&]*&?(\S*)\sHTTP [NC]
RewriteRule ^ %{REQUEST_URI}?%1%2 [R=301,NE,L]

答案 1 :(得分:0)

我现在拥有的:

如果参数在中间

RewriteCond %{QUERY_STRING} ^(.+)&useless=[0-9a-z_-]+&(.+)$ [NC]
RewriteRule (.*) $1?%1&%2 [R=301,L]

如果参数是最后一个

RewriteCond %{QUERY_STRING} ^(.+)&useless=[0-9a-z_-](.+)$ [NC]
RewriteRule (.*) $1?%1 [R=301,L]

如果是第一个,但有一些

RewriteCond %{QUERY_STRING} ^(.+)?useless=[0-9a-z_-]+&(.+)$ [NC]
RewriteRule (.*) $1?%1%2 [R=301,L]

但如果它是唯一的参数

,则无法确定条件和规则