HTACCESS 重定向使用 URL 参数 ID 号范围

Posted

技术标签:

【中文标题】HTACCESS 重定向使用 URL 参数 ID 号范围【英文标题】:HTACCESS redirect using URL parameter ID number range 【发布时间】: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。

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

【问题讨论】:

【参考方案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((\d1,3)|([1-6]\d3)|(7[0-5]\d2)|(760[0-3]))\b

应该分成这几个步骤:

    0 &lt;= ID &lt;= 999: \d1,3 1000 &lt;= ID &lt;= 6999: [1-6]\d3 7000 &lt;= ID &lt;= 7599: 7[0-5]\d2 7600 &lt;= ID &lt;= 7603: 760[0-3]

你可以测试一下Here

【讨论】:

以上是关于HTACCESS 重定向使用 URL 参数 ID 号范围的主要内容,如果未能解决你的问题,请参考以下文章

使用 .htaccess 重定向 URL 而不使用尾随帖子 ID

如何使用 htaccess 将带有参数的旧 url 重定向到新的 seo url

使用参数重定向 PHP URL

重定向并将参数保留在 .htaccess 的 url 中

htaccess url重定向参数不起作用

htaccess重定向到没有页面ID和新目录的URL