我最近更改了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]