如何在RegEx重定向条件下仅针对数字



我最近更改了Wordpress博客的所有URL,不包括年份、月份和日期。

我不想创建单独的重定向规则,而是想使用RegEx只创建一个通配符规则。

所以从像http://www.example.com/blog/2015/01/01/blog-title/这样的URL转到http://www.example.com/blog/blog-title/

我需要能够识别在/blog/之后输入的数字,以免干扰我的其他URL。

所以我尝试在我的重定向插件中输入这个规则:

源URL:/blog/^[0-9]*$/^[0-9]*$/^[0-9]*$/(.*)目标URL:/blog/$1/

但这似乎根本没有重定向,所以来源没有被识别。我应该使用什么规则来查找yyyy/mm/dd格式的/blog/之后的任何数字?

您必须转义/,并且$从字符串末尾开始匹配。所以你需要像这样的东西

blog/d{4}/d{2}/d{2}/(.*)

这应该进行替换(由regex101生成(:

$re = "/blog\/\d{4}\/\d{2}\/\d{2}\/(.*)/"; 
$str = "http://www.example.com/blog/2015/01/01/blog-title"; 
$subst = "blog/$1"; 
$result = preg_replace($re, $subst, $str, 1);

输出:

http://www.example.com/blog/blog-title

您可以在RewriteEngine On行下方使用此重定向规则:

RewriteCond ^/blog/d{4}/d{2}/d{2}/(.*)$ [NC]
RewriteRule ^ /blog/%1 [L,NE,R=301]

最新更新