RedirectMatch:重定向到错误 URL
RedirectMatch: redirects to wrong URL
我换了一个 Shop-CMS 并将很多旧的 URL 放入 .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/
当我转到示例时。com/products/catxy/319 我被重定向到 product-1 而不是 product-3
据我了解,上面的正则表达式意味着从 /products/catxy/319[MAYBEMORE] 开始 -> 重定向到 product-3
我不能写 ^/products/catxy/319$ 因为 319(该产品 ID 的所有变体)有很多不同的结尾。
我也不知道在我的情况下使用 mod_rewrite 是否更好。
问题在于模式末尾存在 ?
:^/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/
记得在测试更改之前清除浏览器缓存。
我换了一个 Shop-CMS 并将很多旧的 URL 放入 .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/
当我转到示例时。com/products/catxy/319 我被重定向到 product-1 而不是 product-3
据我了解,上面的正则表达式意味着从 /products/catxy/319[MAYBEMORE] 开始 -> 重定向到 product-3
我不能写 ^/products/catxy/319$ 因为 319(该产品 ID 的所有变体)有很多不同的结尾。
我也不知道在我的情况下使用 mod_rewrite 是否更好。
问题在于模式末尾存在 ?
:^/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/
记得在测试更改之前清除浏览器缓存。