.htaccess重定向 - 如何处理"嵌套"字符串?

时间:2016-10-28 21:53:27

标签: regex apache .htaccess redirect mod-rewrite

情况:产品系列的一部分通过新功能进行了升级/增强,从而增加了" XL"所有型号名称。

问题:需要将旧网址重定向到新网址,但新网址包含旧关键字+" XL",导致"太多重定向和#34 ;

实施例: RewriteRule ^.*(PRODUCT-001).*$ http://www.example.com/PRODUCT-001-XL [L,NC,R=301]

如何指定我希望此确切字符串匹配,而不是其他网址?

E.g。 "此规则应与 PRODUCT-001 相匹配,但 PRODUCT-001-XL

1 个答案:

答案 0 :(得分:1)

尾随.*允许在它之后出现任何/无任何内容。删除它,你的正则表达式将匹配PRODUCT-001而不是PRODUCT-001-XL

RewriteRule ^.*(PRODUCT-001)$ http://www.example.com/PRODUCT-001-XL [L,NC,R=301]

请参阅:https://regex101.com/r/tP8yq4/1https://regex101.com/r/tP8yq4/2

如果您只想阻止-XL,另一种方法是否定前瞻。您需要使用Apache 2+。

^.*PRODUCT-001(?!-XL).*$

第三次演示:https://regex101.com/r/tP8yq4/3