You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写自定义脚本迁移Magento 2网站商品URL目标路径至其他站点?

解决URL重定向失效与批量商品URL生成的高效方案

先排查重定向失效的核心原因

  • 检查服务器配置规则:不管用Nginx还是Apache,确认重定向规则的优先级,有没有被其他规则覆盖。比如Nginx里rewrite规则要放在正确的server块下,Apache的RedirectMatch要确保没有冲突的.htaccess规则。
  • 验证目标URL有效性:手动访问新站点的目标URL,确认返回200状态码,避免因目标页面不存在导致重定向失效。
  • 清空缓存:服务器、CDN甚至浏览器缓存都可能导致新规则不生效,先清空所有层级的缓存再测试。

批量生成URL的脚本实现

Python脚本(适配CSV商品列表)

如果你的商品信息存在CSV里(比如包含SKU、旧商品URL等字段),可以用这个脚本批量生成新旧URL映射,甚至直接输出服务器重定向规则:

import csv

# 配置新旧站点的路径模板
OLD_URL_TEMPLATE = "https://old-site.com/product/{sku}"
NEW_URL_TEMPLATE = "https://new-site.com/item/{sku}"
# 读取CSV文件(假设第一列是SKU)
with open('product_list.csv', 'r', encoding='utf-8') as csv_file:
    reader = csv.reader(csv_file)
    next(reader)  # 跳过表头行
    # 生成Nginx重定向规则,也可以改成输出CSV映射
    for row in reader:
        sku = row[0].strip()
        old_url = OLD_URL_TEMPLATE.format(sku=sku)
        new_url = NEW_URL_TEMPLATE.format(sku=sku)
        print(f"rewrite ^{old_url.replace('.', '\\.')}$ {new_url} permanent;")

运行后直接把输出的规则复制到Nginx配置文件里即可。

Bash脚本(处理纯URL列表)

如果已经有旧URL的文本列表(每行一个URL),用sed快速替换生成新URL:

# 将urls.txt里的旧URL替换成新URL,输出到new_urls.txt
sed 's/https:\/\/old-site\.com\/product/https:\/\/new-site\.com\/item/g' urls.txt > new_urls.txt

更高效的通配符重定向方案

如果新旧站点的URL结构有固定规律(比如只是域名和路径前缀不同),完全不用逐个生成URL,直接在服务器配置里写通配符规则:

Nginx配置示例

server {
    listen 80;
    server_name old-site.com;
    # 匹配所有/product/开头的路径,重定向到新站点对应路径
    rewrite ^/product/(.*)$ https://new-site.com/item/$1 permanent;
}

Apache配置示例

<VirtualHost *:80>
    ServerName old-site.com
    RedirectMatch permanent ^/product/(.*)$ https://new-site.com/item/$1
</VirtualHost>

这种方式能一次性处理所有符合规则的URL,比批量生成单个规则高效得多。

CSV导入问题的排查要点

如果之前用CSV导入迁移商品时出问题,先检查这几点:

  • 确认CSV里的URL没有多余空格、转义字符或者格式错误(比如缺少协议头https://)
  • 核对导入工具要求的列名格式,比如是否需要明确标注old_url和new_url作为列标题
  • 测试少量数据导入,排查是否是特定商品的特殊字符导致导入失败

内容的提问来源于stack exchange,提问作者vyshnavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:57:11