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

OpenCart技术咨询:如何移除SEO链接中的查询参数

OpenCart技术咨询:如何移除SEO链接中的查询参数

嘿,我来帮你搞定OpenCart里SEO链接还带着查询参数的问题!其实核心就是调整SEO URL的重写逻辑,让所有原本在查询串里的参数都被整合到友好的路径中,彻底去掉那些?xxx=xxx的尾巴。

首先,你要找到catalog/controller/startup/seo_url.php这个文件——就是你提供的SeoUrl控制器所在的位置,接下来咱们一步步调整:

  • 先确认后台的SEO URL功能已经开启(代码里的config_seo_url已经设为启用,这部分你当前的代码已经做了判断,没问题)。
  • 重点要修改的是SeoUrl类里的rewrite方法(因为addRewrite($this)会让OpenCart的URL系统调用这个方法处理重写逻辑),要让它把所有GET参数都转化为SEO路径,而不是留在查询串里。

给你一个具体的修改思路,替换原有rewrite方法即可:

public function rewrite($link) {
    $url_info = parse_url(str_replace('&', '&', $link));

    $url = '';
    $data = [];

    parse_str($url_info['query'], $data);

    if (isset($data['route'])) {
        $query = $data['route'];
        unset($data['route']);

        // 把所有查询参数拼接到路由字符串里
        foreach ($data as $key => $value) {
            $query .= '/' . $key . '/' . $value;
        }

        // 匹配对应的SEO URL规则
        $seo_url = $this->model_design_seo_url->getSeoUrl($query, $this->config->get('config_language_id'), $this->config->get('config_store_id'));

        if ($seo_url) {
            $url = '/' . $seo_url;
        } else {
            $url = '/' . $query;
        }
    }

    if ($url) {
        return $url_info['scheme'] . '://' . $url_info['host'] . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url;
    } else {
        return $link;
    }
}

这段代码的逻辑是把所有查询参数都拼接成标准的路由字符串,再通过SEO URL模型匹配对应的友好路径,这样就能把原本在?后面的参数全部转化为URL路径的一部分。

另外要提醒你:修改核心文件前一定要先备份,避免改出问题没法恢复;同时要确保后台已经给产品、分类等页面设置了正确的SEO关键词,这样系统才能正确生成对应的友好链接。

备注:内容来源于stack exchange,提问作者mehmetmutlu16

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:38:09