2016-08-05 43 views
0

我最近更改了所有的WordPress博客网址,不包括年份,月份和日期。如何在RegEx重定向条件中定位数字?

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

所以要从URL如http://www.example.com/blog/2015/01/01/blog-title/http://www.example.com/blog/blog-title/

我需要能够识别在/ blog /之后输入的数字,因为它不会干扰我拥有的其他URL。

于是,我就在我的重定向插件进入这个规则:

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

但是,这似乎并没有在所有重定向,因此源不是被认可。我应该使用什么规则在/ blog /以yyyy/mm/dd格式查找任何数字?

回答

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 
0

您可以使用此重定向规则仅低于RewriteEngine On行:

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