UrlRewrite,删除部分不匹配的模式

时间:2014-01-07 03:46:52

标签: regex .htaccess mod-rewrite

我有点难过,可以使用一些帮助。将一堆页面从一台服务器转移到另一台服务器,并稍微改变路径以包含新的用户ID。我已经完成了旧网址到新网址的地图,但我的重写只是不起作用。

这是我目前对htaccess文件的尝试:

RewriteRule /users/MikeJones[^.*] http://new.com/profiles/1234/mikejones/ [NC,R=301,L]

我希望这些网址中的任何一个都应该转到我提供的网址,而不是附加原始网址的一部分。

我的结果如下:

old.com/users/MikeJones >  new.com/profiles/1234/mikejones/ (Good!)
old.com/users/MikeJones/ >  new.com/profiles/1234/mikejones// (Bad)
old.com/users/MikeJones/test >  new.com/profiles/1234/mikejones//test (Bad)
old.com/users/MikeJones1234 >  new.com/profiles/1234/mikejones/1234 (Bad)
old.com/users/MikeJones?test=that >  new.com/profiles/1234/mikejones/?test=that (Bad)

我想总是去同一个网址,不管原始网址上还有什么。

像这样:

old.com/users/MikeJones >  new.com/profiles/1234/mikejones/ 
old.com/users/MikeJones/ > new.com/profiles/1234/mikejones/
old.com/users/MikeJones/test > new.com/profiles/1234/mikejones/
old.com/users/MikeJones1234 > new.com/profiles/1234/mikejones/
old.com/users/MikeJones?test=that > new.com/profiles/1234/mikejones/

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

不确定您的规则在您的htaccess文件中是如何工作的,因为mod_rewrite会从URI中删除前导/,因此您需要与users/匹配,而不是{{1} }:

/users/

应该是您所需要的一切。您不需要任何其他规则,如果执行有其他规则,请确保之前