【问题标题】:HTACCESS redirect using URL parameter ID number rangeHTACCESS 重定向使用 URL 参数 ID 号范围
【发布时间】:2014-08-01 10:48:03
【问题描述】:

我希望有人可以提供帮助,因为事实证明这很难弄清楚。

我正在尝试通过 HTACCESS 和 mod_rewrite 重定向一些 URL 参数 ID 值在特定范围内(从 1 到 7603)的页面。

这是我目前所拥有的:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} &?id=\b([1-9][0-9]{0,2}|[1-6][0-9]{3}|7[0-5][0-9]{2}|760[0-3])\b [NC]
RewriteRule ^example\.php$ http://www.website.com/? [R=301,L]
</IfModule>

如果有 ID URL 参数,它当前会重定向页面,但它会重定向任何 ID 号,而不仅仅是指定范围内的 ID 号,例如即使不应该重定向,它也会重定向 ID=10000。

有谁知道我做错了什么以及如何解决?

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite redirect


    【解决方案1】:

    对于您显示的示例,您能否尝试以下操作。请确保在测试 URL 之前清除缓存。将检查查询字符串的条件以确保 id= 之后的值在此处远低于 7603,其余重定向部分仅根据 OP 显示的示例。

    RewriteEngine ON
    RewriteCond %{QUERY_STRING} id=[0-6]?[0-9]?[0-9]?[0-9]?(?![0-9]+) [NC,OR]
    RewriteCond %{QUERY_STRING} id=7?[0-5]?[0-9]?[0-9]?(?![0-9]+) [NC,OR]
    RewriteCond %{QUERY_STRING} id=760[0-3]?(?![0-9]+) [NC]
    RewriteRule ^example\.php/?$ http://www.website.com/? [R=301,L]
    

    【讨论】:

      【解决方案2】:

      你可以使用这个正则表达式:\b((\d{1,3})|([1-6]\d{3})|(7[0-5]\d{2})|(760[0-3]))\b

      应该分成这几个步骤:

      1. 0 &lt;= ID &lt;= 999: \d{1,3}
      2. 1000 &lt;= ID &lt;= 6999: [1-6]\d{3}
      3. 7000 &lt;= ID &lt;= 7599: 7[0-5]\d{2}
      4. 7600 &lt;= ID &lt;= 7603: 760[0-3]

      你可以测试一下Here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-10
        • 2016-01-09
        • 1970-01-01
        • 2015-04-27
        • 2016-06-11
        • 1970-01-01
        • 2022-10-04
        相关资源
        最近更新 更多