我想重定向所有类似的网址:
olivian.ro/[year between 1997 & 2050]/[month between 01 & 12]/anything-starting-with-an-alphanumeric
除了
olivian.ro/[year between 1997 & 2050]/page/whatever.
这种情况目前在重定向方面做得很好。
/(\d*)/(\d*)/(.*[0-9a-zA-Z])
问题在于向第三卷添加例外。
那么,我如何使用正则表达式添加:
(.*[0-9a-zA-Z])
规则,但这是“page”的情况
我希望olivian.ro/2012/09/my-article-about-scissors
重定向到olivian.ro/my-article-about-scissors
但我不希望olivian.ro/2012/09/page/2
重定向到olivian.ro/page/2
我正在使用WordPress的重定向插件,将第一组规则重定向到/$3
。
答案 0 :(得分:0)
在.htaccess中,在RewriteRule
:
RewriteCond %{REQUEST_URI} !/\d+/\d+/page/
在php本身,你可以在正则表达式本身做一个负向前瞻:
#/(\d*)/(\d*)/(?!page)(.*[0-9a-z])#i
请注意(.*[0-9a-z])
表示“任何字符(。)一次或多次,然后是0-9或az中的1个字符,我怀疑是你想要的。 .. ([0-9a-z]*)
似乎更贴切,甚至([^/]+)
(除了斜线,至少有一个)。你对它的实际描述(“任何东西 - 以字母数字开头”)当然是([0-9a-zA-Z].*)