Apache htaccess仅在存在特定参数时重写COND

Apache htaccess仅在存在特定参数时重写COND,apache,.htaccess,mod-rewrite,parameters,query-string,Apache,.htaccess,Mod Rewrite,Parameters,Query String,我在htaccess文件中使用以下4行重定向和重写URL: RewriteCond %{THE_REQUEST} /GetSearch1-test\.php [NC] RewriteCond %{QUERY_STRING} ^Class=Residential\&Neighborhood\%5B\%5D=(.*)$ [NC] RewriteRule ^ /Neighborhoods/%1\.html? [R=301,L] RewriteRule ^Neighborhoods/([^.]*

我在htaccess文件中使用以下4行重定向和重写URL:

RewriteCond %{THE_REQUEST} /GetSearch1-test\.php [NC]
RewriteCond %{QUERY_STRING} ^Class=Residential\&Neighborhood\%5B\%5D=(.*)$ [NC]
RewriteRule ^ /Neighborhoods/%1\.html? [R=301,L]
RewriteRule ^Neighborhoods/([^.]*)\.html$ /GetSearch1-test.php?Class=Residential\&Neighborhood\%5B\%5D=$1 [NC,L]
它将采用以下URL: www.domain.com/GetSearch1 test.php?Class=Residential&Neighbor%5B%5D=Wailea 并将其重定向到此URL: www.domain.com/Neighborhoods/Wailea.html

这是可行的,但有重大问题。问题是,我只希望它在只有这两个参数存在(类和邻域)的情况下执行重定向。第一个参数是固定的,但第二个参数可以是任何参数。如果我向URL添加第三个参数,它仍然会重定向,我不希望它这样做

例如,如果我转到此URL: www.domain.com/GetSearch1 test.php?Class=Residential&neighbour%5B%5D=Wailea&Parameter3=where


它仍然重定向。如果您有任何想法,我们将不胜感激。

您可以通过以下方式更改第二次重写:

RewriteCond %{QUERY_STRING} ^Class=Residential&Neighborhood\%5B\%5D=([^&]*)$ [NC]

它起作用了!。非常感谢你。我不知道为什么,但确实如此。我会研究这是什么:[^&]再次感谢。不客气
[^&]
表示“任何非
&
的字符”。感谢您“接受”我的答案…您可以点击我答案左上角的勾号,将答案标记为已接受。谢谢