问题现象:浏览器提示too many redirects时,先用curl记录每一跳的Location。不要一上来清空url_rewrite,否则会丢失全部历史301。

阶段实际操作
复现分别请求HTTP/HTTPS、带/不带尾斜杠和目标Store域名,使用curl -I -L --max-redirs 10记录跳转链,找出第一次回到已访问URL的位置。
取证查询循环中两个request_path的url_rewrite。正常旧路径应custom redirect到新路径,新路径应指向catalog/category/view/id。若两条都是redirect或互指,就修复具体记录。
修复检查“Create Permanent Redirect for URLs if URL Key Changed”及Store View覆盖。默认范围和子Store分别保存可能生成反向历史重写。
回归Magento记录正确时再查Nginx、CDN和SEO扩展的尾斜杠/HTTP规则。每层只保留一个规范化责任,修改后清CDN 301缓存。

可直接执行的检查

curl -I -L --max-redirs 10 https://shop.example/old-category.html
SELECT url_rewrite_id,request_path,target_path,redirect_type,store_id,entity_id FROM url_rewrite WHERE request_path IN ('old-category.html','new-category.html') OR target_path IN ('old-category.html','new-category.html');

通过标准:旧URL只跳一次到新URL,新URL直接200;带参数、尾斜杠和两个Store域名都不会回跳。

301会被浏览器和CDN长时间缓存,验收应使用curl和新路径,不要只看原浏览器标签。