0

我想重定向所有这样的 URL:

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]) 

除了这是“页面”的情况之外的规则

我想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.

4

1 回答 1

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]*)似乎更贴切,甚至([^/]+)(除了斜线之外的任何东西,在至少有一个)。您对它的实际描述(“anything-starting-with-an-alphanumeric”)当然是([0-9a-zA-Z].*)

于 2013-06-12T13:58:05.567 回答