多个QUERY_STRING单独组合QUERY_STRING

时间:2016-05-13 07:35:30

标签: .htaccess redirect mod-rewrite query-string

我有一个要做的重定向列表,其中许多与其他重定向相似,但限制较少或更多,例如:

http://www.example.com/example/form.aspx?code=2http://www.google.com

而另一方面:

http://www.example.com/form.aspx?category=5&code=2http://www.microsoft.com

现在我尝试了:

RewriteCond %{QUERY_STRING} ^code=2$
RewriteCond %{REQUEST_URI} "^/example/form(.*)"
RewriteRule (.*) http://www.google.com? [R=301,L]

RewriteCond %{QUERY_STRING} code=2
RewriteCond %{QUERY_STRING} category=5
RewriteCond %{REQUEST_URI} "^/example/form(.*)"
RewriteRule (.*) http://www.microsoft.com? [R=301,L]

问题在于http://www.google.com/?code=2http://www.google.com/?code=2&category=5

你有什么建议吗?

谢谢你。

3 个答案:

答案 0 :(得分:1)

您可以使用以下规则重定向您的网址:

RewriteCond %{THE_REQUEST} /example/form\.aspx\?code=2 [NC]
RewriteRule ^ http://google.com/? [L,R]
RewriteCond %{THE_REQUEST} /example/form\.aspx\?category=5&code=2 [NC]
RewriteRule ^ http://microsoft.com/? [L,R]

答案 1 :(得分:1)

如果是

  

http://www.example.com/example/form.aspx?code=2 - > http://www.google.com

     

http://www.example.com/form.aspx?category=5&code=2 - > http://www.microsoft.com

RewriteCond %{QUERY_STRING} ^code=2$
RewriteCond %{REQUEST_URI} ^/example/form(.*)
RewriteRule ^(.*)$ http://www.google.com? [R=301,L]

RewriteCond %{QUERY_STRING} code=2$
RewriteCond %{QUERY_STRING} ^category=5
RewriteCond %{REQUEST_URI} ^/example/form(.*)
RewriteRule ^(.*)$ http://www.microsoft.com? [R=301,L]

如果是

  

http://www.example.com/example/form.aspx?category=5&code=2 - > http://www.microsoft.com

     

http://www.example.com/example/form.aspx?category=5&code=234 - > http://www.stackoverflow.com

使用此

RewriteCond %{QUERY_STRING} code=2$
RewriteCond %{QUERY_STRING} ^category=5
RewriteCond %{REQUEST_URI} ^/example/form(.*)
RewriteRule ^(.*)$ http://www.microsoft.com? [R=301,L]

RewriteCond %{QUERY_STRING} code=234$
RewriteCond %{QUERY_STRING} ^category=5
RewriteCond %{REQUEST_URI} ^/example/form(.*)
RewriteRule ^(.*)$ http://www.stackoverflow.com? [R=301,L]

答案 2 :(得分:0)

还有其他问题:

如果你有多个像1个元素一样,而另一个与前一个类似,是否可以指定而无需排序?

现在,如果我有:

RewriteCond %{QUERY_STRING} **code=2**
RewriteCond %{QUERY_STRING} category=5
RewriteCond %{REQUEST_URI} ^/example/form(.*)
RewriteRule ^(.*)$ http://www.microsoft.com? [R=301,L]

RewriteCond %{QUERY_STRING} **code=234**
RewriteCond %{QUERY_STRING} category=5
RewriteCond %{REQUEST_URI} ^/example/form(.*)
RewriteRule ^(.*)$ http://www.stackoverflow.com? [R=301,L]

它始终是http://www.microsoft.com,因为code = 234包含code = 2 ....