【问题标题】:Using htaccess regex with range to redirect使用带范围的 htaccess 正则表达式进行重定向
【发布时间】:2015-09-15 19:18:13
【问题描述】:
这是我的 .htaccess 正则表达式:
RewriteRule ^index.php/news/([0-9][0-9][0-9])?/16$ /index.php/news/$1/16 [L,R=301]
这行得通。但是,我需要 0-1879 的范围来重定向到 /index.php/news/$1/16,超过 1879 的范围才能重定向到 http://otherdomain/index.php/news/$1/16。
【问题讨论】:
标签:
regex
.htaccess
redirect
【解决方案1】:
你不应该这样做,但是......
以下是匹配 0-1879 的方法:
[0-9]|[1-9][0-9]{1,2}|1[0-7][0-9]{2}|18[0-6][0-9]|187[0-9]
这是匹配 1880-infinity 的方法
18[8-9][0-9]|19[0-9]{2}|[2-9][0-9]{3}|[1-9][0-9]{4}
注意:通过交替,您需要将它们包装在一个组 () 中以正确嵌套逻辑。
我建议...
只需匹配 0+ 个数字并重定向到另一个域。如果数字是 0-1879(在您的后端语言、控制器等中),则将它们重定向回原始域。或者弄清楚如何将旧新闻迁移到另一个域,如果你正在做我认为你正在做的事情。