正则表达式取代&在URL中

时间:2013-02-07 05:34:21

标签: regex url-rewriting http-status-code-301

由于某些错误,我们的网站链接到带有&的网址。在网址中。例如/ movies-& -plays / find /。然而,这会引发404导致网站管理员上的许多链接断开,因为我们的应用程序中没有处理。 有没有办法取代'&'这些类型的网址中的'和',即只有那些带/ find /的网址。这样就可以编写一个正则表达式来写一个301重定向到所有这类URL的URL到'和'而不是&amp ;.例如/ movies-& -plays / find /必须重定向到/ movies-and-plays / find /。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

perl -pe 's/(\/[^\/ &]*)&(?=[^\/ ]*?\/find\/)/$1and/g' FILENAME

给出此输入时:

http//www.web.com/hello&goodbye/find/

///////&/junk/to/test
////&/find/

生成以下输出:

http//www.web.com/helloandgoodbye/find/

///////&/junk/to/test
////and/find/

答案 1 :(得分:0)

对于与([^&]+&[^&]*)+/find/匹配的网址,将所有&替换为and