英文店希望使用 red-shirt,德文店希望使用 rotes-hemd。后台字段看似保存成功,前台却仍跳到默认 URL。

先看属性作用域与保存范围

切到目标 Store View,取消“使用默认值”后再保存 URL Key。若导入脚本总在 default scope 写入,它会覆盖不到店铺级值;反过来,错误的 store_id 也会产生看似存在却永远不被当前店铺读取的数据。

SELECT store_id, request_path, target_path, redirect_type
FROM url_rewrite
WHERE entity_type='product' AND entity_id=:product_id
ORDER BY store_id, request_path;

最终 URL 还受到商品 URL 后缀、是否包含分类路径、历史重定向和同店铺唯一性限制。不要只查 EAV 属性值。

验收矩阵

  • 直接访问两个语言的新 URL 都返回 200;
  • 旧 URL 只做一次预期 301;
  • 切换语言不会落回默认 Store;
  • canonical 指向当前语言的规范地址。

若批量改大量 URL Key,应先用少量 SKU 生成重写并检查冲突,再扩大范围。