.htaccess正则表达式重定向 - 如何删除关键字?

时间:2016-10-19 19:28:39

标签: regex .htaccess

情况:网站上的许多页面都被提升了一个级别",例如

www.example.com/all-widgets/red-widgets/widget001 就是现在 www.example.com/red-widgets/widget001

问题:许多过时的链接包含now-defunct / all-widgets / category。

从网址删除关键字的正则表达式语法是什么?

换句话说,&#34;如果有任何传入的网址包含此关键字,请移除 此关键字,但保留网址的其余部分&#34;。< / p>

跟进:可能存在关键字必须是精确的1次匹配的情况,因为它可能出现在URL的其他位置。

换句话说,这样的传入网址可能存在:

www.example.com/all-widgets/red-widgets/widget074-compatible-with-all-widgets

我只需删除&#34;所有小部件&#34;的第一次出现(以修复类别迁移问题),但保留其余部分(因此它不会破坏实际的产品/博客网址)。

3 个答案:

答案 0 :(得分:0)

试试这个:

RewriteRule /all-widgets/(.*) $1 [L, R=301]

答案 1 :(得分:0)

以下正则表达式会将前导all-widgets与您的网址^all-widgets/(.+)$分开。然后,您可以根据要路由其余部分的方式添加重写规则: 例如,

RewriteRule ^all-widgets/(.+)$ $1 

答案 2 :(得分:0)

您可以使用此规则从网址中的任意位置删除all-widgets的{​​strong>第一个实例。它还适用于URL未以all-widgets开头的情况。

RewriteEngin On
RewriteBase /

RewriteRule ^(?:|(.*?)/)all-widgets(/.*|)$ $1$2 [L,R=301,NE,NC]

RegEx Demo