【问题标题】:MULTIPLE QUERY_STRING COMBINED ALONE QUERY_STRING多个 QUERY_STRING 单独组合 QUERY_STRING
【发布时间】:2016-09-09 07:04:40
【问题描述】:

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

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

你有什么建议吗?

谢谢。

【问题讨论】:

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


    【解决方案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]
    

    【讨论】:

      【解决方案2】:

      万一

      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]
      

      【讨论】:

        【解决方案3】:

        还有其他问题:

        如果你有不止一个有1个元素的like,另一个和上一个类似,有什么方法可以指定而不需要排序吗?

        现在如果我有例如:

        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....

        【讨论】:

        • 分别使用RewriteCond %{QUERY_STRING} code=2$RewriteCond %{QUERY_STRING} code=234$ 而不是RewriteCond %{QUERY_STRING} **code=2**RewriteCond %{QUERY_STRING} **code=234**
        • 下次请将其更新为您的问题或提出新问题,而不是添加为另一个答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-06
        • 2017-12-04
        • 1970-01-01
        • 1970-01-01
        • 2013-08-22
        • 1970-01-01
        相关资源
        最近更新 更多