我设法让自己完全沉浸在正则表达的世界中,并且可以做出一些帮助。
我最近将我的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错误,这些错误让我对此有所了解。
任何人都可以帮忙!?
答案 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