2014-06-12 33 views
0

我已经设法让自己完全陷入正则表达式的世界,并且可以用一只手做。用正则表达式剥离wordpress网址中的“blog”

我最近将wordpress安装从/ blog子域移到了整个站点,因此我需要从所有传入的url中除去/博客/除了精确匹配外,因为/ blog仍然是博客。

比如我需要:

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

所有丢失/博客/但我需要

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

,以保持他们的。

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

任何人都可以帮忙!?

+1

更换' '/博客/''和' '/''应该做的伎俩。你甚至不需要正则表达式。 – Tomalak

回答

0

您需要/$1

只有/更换/blog/更换\/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 
+0

除了我以前的发布结构是/ y/m/d/postname之外,这个功能非常完美。当它存在时,我将如何去除它,但是当它不存在时不会影响其他重定向? – user3733863

+0

嗯...这是剥离博客,但不是/ 2012/10/01 /在帖子中,并没有剥离任何博客/标签/ 2012。 编辑:太快推回来。这张图片显示了我的设置。这是错的吗? https://dl.dropboxusercontent.com/u/25250818/Screen%20Shot%202014-06-12%20at%2014.21.41。png – user3733863

+0

@ user3733863这就是为什么我添加了“$ 2”。如果你想全部剥离,你可以使用'/ $ 2'作为目标。较新的模式只与日期模式匹配。你可以通过在'()'之后加一个'?'来使其成为可选项。 – user887675

0

为什么不试试简单更换()?。除非我误解了这个问题,否则显示的结果与您所需要的不一样?

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 
+0

它需要作为301重定向工作?不要以为你可以在htaccess文件中使用它。 – user3733863