Regex htaccess:尝试从url中剪切参数,保留其他可选参数
我试图从URL中剪切一个参数,但保留其他参数,我永远不知道其值Regex htaccess:尝试从url中剪切参数,保留其他可选参数,regex,.htaccess,mod-rewrite,Regex,.htaccess,Mod Rewrite,我试图从URL中剪切一个参数,但保留其他参数,我永远不知道其值 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=somev
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
您可以使用此规则从任何位置删除命名查询参数:
RewriteEngine On
RewriteCond %{THE_REQUEST} \?(.*&)?useless=[^&]*&?(\S*)\sHTTP [NC]
RewriteRule ^ %{REQUEST_URI}?%1%2 [R=301,NE,L]
我现在所拥有的:
如果参数在中间
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]
但是,如果它是唯一的参数,则无法确定条件和规则。否实际上根本不起作用。无论参数位于何处。它在我的Apache上对参数的每个位置都有效。很可能你有一些本地代码/配置问题,导致这条规则不能完全被激发。可能是在CMS环境中,所以可能会有更多。正如我之前所写的,这个单一规则适用于所有3个参数为第一、最后或中间的情况。你必须把这条规则作为第一条规则抱歉,但我不能把它放在第一位,因为所有其他东西都不起作用了。另一个问题似乎是实际值看起来像www.example.com/?无用=%252525252525252525252252252FPROC%252525252525252525252252525252252252252252252252252252252252252252252252252252252252252252252252252252252252252芬维隆那么我如何匹配这些呢?除非无用的值类似于%25252525somethingsomething%2525