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 <= ID <= 999
: \d1,3
1000 <= ID <= 6999
: [1-6]\d3
7000 <= ID <= 7599
: 7[0-5]\d2
7600 <= ID <= 7603
: 760[0-3]
你可以测试一下Here
【讨论】:
以上是关于HTACCESS 重定向使用 URL 参数 ID 号范围的主要内容,如果未能解决你的问题,请参考以下文章
使用 .htaccess 重定向 URL 而不使用尾随帖子 ID