我切换了Shop-CMS,并将大量旧网址放入.htaccess中,将旧产品重定向到新位置。
但有些重定向是错误的:
RedirectMatch 301 ^/products/catxy/313? https://www.example.com/products/catxy/product-1/
RedirectMatch 301 ^/products/catxy/314? https://www.example.com/products/catxy/product-2/
RedirectMatch 301 ^/products/catxy/319? https://www.example.com/products/catxy/product-3/
当我访问example.com/products/catxy/319时,我被重定向到product-1而不是product-3
据我所知,上面的正则表达式意味着从/ products / catxy / 319 [MAYBEMORE]开始 - >重定向到product-3
我不能写^ / products / catxy / 319 $因为319有很多不同的结局(该产品ID的所有变体)。
我不知道在我的情况下使用mod_rewrite是否更好。
答案 0 :(得分:0)
问题是在模式的末尾存在?
:^/products/catxy/313?
,这使得最后一个数字可选,因此您的第一个规则匹配以下所有开头的任何内容:
/products/catxy/313
或
products/catxy/31
你可能意味着保持尾随斜杠是可选的,你的规则如下:
RedirectMatch 301 ^/products/catxy/313(?:/.*)?$ https://www.example.com/products/catxy/product-1/
RedirectMatch 301 ^/products/catxy/314(?:/.*)?$ https://www.example.com/products/catxy/product-2/
RedirectMatch 301 ^/products/catxy/319(?:/.*)?$ https://www.example.com/products/catxy/product-3/
请记住在测试更改之前清除浏览器缓存。