我希望有人能提供帮助,因为事实证明这很难弄清楚。
我尝试通过 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,即使不应该。
有谁知道我做错了什么以及如何解决它?
最佳答案
根据您显示的示例,您可以尝试以下操作吗?请确保在测试您的网址之前清除缓存。将检查查询字符串的条件,以确保 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]
关于regex - 使用 URL 参数 ID 编号范围进行 HTACCESS 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24161897/