情况:网站上的许多页面都被提升了一个级别",例如
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;的第一次出现(以修复类别迁移问题),但保留其余部分(因此它不会破坏实际的产品/博客网址)。
答案 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]