【问题标题】:How to create RewriteRule where the request URL has query string如何在请求 URL 具有查询字符串的情况下创建 RewriteRule
【发布时间】:2011-11-07 20:50:52
【问题描述】:

我觉得我真的很接近了,但我不能完全让这个 Apache RewriteRule 正常工作。

我有一个类似 http://mysite.com/product.php?view=true&ID=123 的 URL,我想重定向到 http://mysite.com/some-page。但是如果产品 ID=456,那么我想将其重定向到 http://mysite.com/some-other-page

所以我不需要为我的目标 URL 保留查询字符串,但我确实关心它在请求中的含义,因为这将决定我将用户重定向到的位置。我一直在努力理解如何使用 mod_rewrite %{QUERY_STRING} 参数,但我就是无法让它工作。

提前感谢您的帮助!

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting query-string


    【解决方案1】:

    这应该会有所帮助。

    RewriteCond %{QUERY_STIRNG} id=456
    RewriteRule .* /some-other-page? [R,L]
    

    更多关于Manipulating the Query String

    【讨论】:

      【解决方案2】:

      像这样:

      RewriteEngine On
      
      RewriteCond %{QUERY_STRING} =view=true&ID=123
      RewriteRule ^product\.php$ /some-page? [R=301,L]
      
      RewriteCond %{QUERY_STRING} =view=true&ID=456
      RewriteRule ^product\.php$ /some-other-page? [R=301,L]
      
      1. 您需要匹配^product.php 以及查询字符串。我确实匹配了 FULL EXACT 查询字符串(view=trueID=123 都需要以精确的顺​​序出现)。如果您只需要部分匹配(例如仅ID=123),则将=view=true&ID=123 替换为ID=123

      2. 注意 ? 在新 URL 的末尾——这是为了摆脱现有的查询字符串。没有它/product.php?view=true&ID=123 将被重定向为/some-page?view=true&ID=123

      3. 我使用了 301 永久重定向。您可能希望将其更改为 302 或您认为更适合您的任何其他重定向代码。

      4. 这将被放置在网站根文件夹中的 .htaccess 中。如果放置在其他地方,可能需要进行一些小的调整。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 1970-01-01
        • 2021-11-29
        • 2019-01-15
        • 1970-01-01
        • 1970-01-01
        • 2020-01-30
        相关资源
        最近更新 更多