如何在RegEx重定向条件中仅定位数字?

时间:2016-08-05 15:41:28

标签: regex wordpress redirect

我最近将所有Wordpress博客网址都更改为不包括年,月和日期。

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

http://www.example.com/blog/2015/01/01/blog-title/http://www.example.com/blog/blog-title/等网址。

我需要能够识别出/ blog /之后输入的数字,因为它不会干扰我的其他网址。

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

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

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

2 个答案:

答案 0 :(得分:0)

您必须转义/$与字符串末尾匹配。所以你需要像

这样的东西
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

答案 1 :(得分:0)

您可以在RewriteEngine On行:

下方使用此重定向规则
RewriteCond ^/blog/\d{4}/\d{2}/\d{2}/(.*)$ [NC]
RewriteRule ^ /blog/%1 [L,NE,R=301]