Regex 如何通过.htaccess删除URL中任意位置的空参数?

Regex 如何通过.htaccess删除URL中任意位置的空参数?,regex,.htaccess,mod-rewrite,url-rewriting,Regex,.htaccess,Mod Rewrite,Url Rewriting,空参数,我的意思是可以在URL中的任何位置,每次不同的位置,每次使用不同的名称,每次在不同的php页面上,例如: http://www.example.com/AnyPHPpageHere.php?parameter1=7&parameter2=&parameter3=blue&parameter4= 填写以下表格: http://www.example.com/AnyPHPpageHere.php?parameter1=7&parameter3=blue

空参数,我的意思是可以在URL中的任何位置,每次不同的位置,每次使用不同的名称,每次在不同的php页面上,例如:

http://www.example.com/AnyPHPpageHere.php?parameter1=7&parameter2=&parameter3=blue&parameter4=
填写以下表格:

 http://www.example.com/AnyPHPpageHere.php?parameter1=7&parameter3=blue
那么如何通过.htaccess来实现呢?

试试:

RewriteEngine on


RewriteCond %{THE_REQUEST} /AnyPHPpageHere\.php\?product=7&keyword=&color=blue&city= [NC]
RewriteRule ^ /AnyPHPpageHere.php?product=7&color=blue [NC,L,R=302]
如果querystring的值是动态的,则可以使用正则表达式catpure组:

RewriteEngine on


RewriteCond %{THE_REQUEST} /AnyPHPpageHere\.php\?product=([^&]+)&keyword=&color=([^&]+)&city= [NC]
RewriteRule ^ /AnyPHPpageHere.php?product=%1&color=%2 [NC,L,R=302]

您可以使用此URL从URL中的任何位置删除任何一个或多个空参数:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^(.+?&)?[^=]+=(?:&(.*))?$
RewriteRule ^ %{REQUEST_URI}?%1%2 [R=302,L,NE]

谢谢,但是anyphppagehere的意思是:这里的任何PHP页面名称,而不仅仅是特定的页面。我解决了这个问题。你误解了我的问题,这只是我问题中的一个例子。我需要一般代码。@KevinSmith它的意思是“yourPage.php”您要重定向到的页面。不,它可以是任何内容,查询可以是任何内容,元素可以是任何内容,它们也可以出现在任何地方,每次出现在不同的地方。e、 g:@KevinSmith好的,我明白了,我会在30分钟后更新我的答案,事实上我在一个聚会上很忙。当我的查询值包含特殊字符时,会出现意外错误,比如中文。。。例如:山西省 更改为:%252525E5%252525B1%252525B1%252525E8%252525A5%252525BF%252525E7%2525259C%25252581您能在这里看看我的新问题吗:我需要您的帮助,先生,您的代码中有一个复杂的解释问题。我试着解释一下:您的代码关闭了我的干净URL设置。在添加代码之后,我的干净URL是kw.html之前,它会得到:search.php?color=kw&submit=1我认为这可能是其他规则的影响。我建议发布一个新的问题与你的问题,我会参加。这是一个真正的宝石!像这样的问题没有100多张选票,真是太遗憾了。