正则表达式:/(\d*)/(\d*)/(.* [0-9a-zA-Z])除了“页面”

时间:2013-06-12 12:51:30

标签: regex wordpress

我想重定向所有类似的网址:

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

1 个答案:

答案 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].*)