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

PrestaShop 1.7产品页链接错误:getLink()获取链接提示页面已迁移

我之前在做PrestaShop二次开发时也碰到过一模一样的问题,用getLink()拿到的链接访问时总是提示“页面已迁移至新链接”,大概率是URL配置、别名生成或者参数调用的问题,给你几个具体的排查和解决方向:

  • 检查URL重写配置
    这是最常见的原因:

    1. 登录PrestaShop后台,进入「首选项 -> SEO&URLs」,确认「启用URL重写」选项已经勾选。
    2. 检查服务器是否开启了mod_rewrite模块(Apache环境),如果是Nginx环境,需要配置对应的URL重写规则。
    3. 确认网站根目录下的.htaccess文件是正确的——可以从PrestaShop官方安装包中复制一份全新的.htaccess文件替换现有文件(替换前记得备份原文件)。
  • 检查产品URL别名的有效性
    getLink()生成的链接依赖产品的SEO别名,如果别名有冲突或未正确生成,就会导致跳转错误:

    1. 进入对应产品的编辑页面,切换到「SEO」标签页,查看「URL别名」是否正确、无重复。如果别名不对,点击「生成」按钮重新生成,或者手动输入唯一的别名。
    2. 如果批量产品都有这个问题,可以在后台「首选项 -> SEO&URLs」中使用「重置URL」工具,重新生成所有产品、分类的SEO别名(注意:这个操作会重置所有自定义的SEO URL,建议先备份数据)。
  • 确保getLink()调用参数正确
    有时候调用getLink()时参数缺失或错误,会生成不符合当前店铺/语言的URL:
    正确的调用方式应该传入当前语言ID和店铺ID,比如:

    // 获取当前上下文的语言和店铺ID
    $id_lang = Context::getContext()->language->id;
    $id_shop = Context::getContext()->shop->id;
    // 生成正确的产品链接
    $product_link = $product->getLink($id_lang, null, null, false, $id_shop);
    

    如果省略这些参数,getLink()会使用默认值,但如果你的店铺有多语言/多店铺配置,就可能生成错误的URL。

  • 清空缓存
    PrestaShop的缓存可能保留了旧的URL路由信息,导致新生成的链接无法正常访问:

    1. 进入后台「高级参数 -> 性能」,点击「清空缓存」按钮。
    2. 手动删除服务器上var/cache目录下的所有文件(注意不要删除目录本身)。
  • 检查产品重定向设置
    个别情况下,产品被设置了手动重定向:
    进入产品编辑页面的「SEO」标签页,查看是否开启了「永久重定向(301)」并设置了错误的目标URL,如果有,取消该设置或修改为正确的链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:30:45