使用Regex从wordpress URL中剥离“博客”

时间:2014-06-12 11:34:49

标签: regex wordpress

我设法让自己完全沉浸在正则表达的世界中,并且可以做出一些帮助。

我最近将我的wordpress安装从/ blog子域移动到整个站点所以我需要从所有传入的URL中删除/博客/除了完全匹配,因为/ blog仍然是博客。

例如我需要:

http://foo.com/blog/bar
http://foo.com/blog/foobar/bar
foo.com/blog/bar

所有人都失去了/ blog /但我需要

http://foo.com/blog
foo.com/blog

保留他们的。

我使用wordpress Redirections插件来管理这个,因为它跟踪了404错误,这些错误让我对此有所了解。

任何人都可以帮忙!?

2 个答案:

答案 0 :(得分:0)

您需要将\/blog\/(.+)替换为/$1

仅将/blog/替换为/也会替换http://foo.com/blog/

<强>更新

  

除了我以前的帖子结构之外,它完美无缺   是/ y / m / d / postname。当它出现时,我怎么能剥离它   但不影响其他重定向?

在这种情况下,您可以使用\/blog\/(\d{4}\/\d{2}\/\d{2}\/(.+))

结果:

url: http://foo.com/blog/2014/03/09/bar
$1: 2014/03/09/bar
$2: bar

更新2:

如果您希望两种方式都被剥离,请使用\/blog\/(?:\d{4}\/\d{2}\/\d{2}\/)?(.+)

结果:

url: http://foo.com/blog/bar
url: http://foo.com/blog/2014/03/09/bar
$1: bar

url: http://foo.com/blog/tag/sometag
$1: tag/sometag

答案 1 :(得分:0)

为什么不尝试简单的replace()?除非我误解了这个问题,否则输出的输出是否与你需要的相同?

    public static void main(String[] args) {
    String s = "http://foo.com/blog/bar";
    String s1 = "http://foo.com/blog";
    System.out.println(s.replace("/blog/", "/"));
    System.out.println(s1.replace("/blog/", "/"));
}

O / P:

http://foo.com/bar
http://foo.com/blog