商品 URL Key 从 old-name 改成 new-name,后台保存成功,前台访问新地址却又 301 回旧地址。继续点保存通常只会生成更多 rewrite,先把跳转链画出来。
用curl看每一跳,不要相信浏览器地址栏
curl -IL --max-redirs 10 https://shop.example.com/new-name.html
curl -I https://shop.example.com/old-name.html
记录每个 Location 和状态码。浏览器会缓存永久重定向,测试时用 curl 或无痕窗口更可靠。如果第一跳就来自 CDN,先绕过外层缓存确认 Magento 本身返回什么。
查当前Store View的Rewrite,而不是全库模糊搜索
按 request_path、target_path、entity_id 和 store_id 查询 url_rewrite。新路径如果被一条 custom rewrite 指向旧路径,而旧路径又指回新路径,就会形成循环。也要区分系统生成记录和管理员创建的自定义重定向。
后台保存 URL Key 时“Create Permanent Redirect for Old URL”会保留旧地址跳向新地址,这是正常 SEO 行为;方向应是旧到新。如果方向相反,多半有历史自定义 rewrite、导入脚本或扩展重建了错误记录。
分类路径与Canonical不是同一个问题
开启分类路径后,同一商品可能有多个 request_path。你改的是商品主 URL Key,但分类 URL rewrite 仍在旧路径,或者菜单缓存还输出旧链接。Canonical 标签只告诉搜索引擎首选地址,不会负责浏览器 301。
不要直接 TRUNCATE url_rewrite。先导出相关商品和 store 的记录,删掉确认有冲突的自定义项,再让 Magento 对该实体重新生成。全表重建会影响 CMS、自定义重定向和正在收录的页面。
修复后验证新地址 200、旧地址单跳 301 到新地址、分类页链接已经更新,并检查两个 store view 不互相串域。跳转少一层和方向正确,对用户与 SEO 都比“最终能打开”更重要。

