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

CodeIgniter网站更换域名后如何批量替换全站超链接旧域名地址?

CodeIgniter站点域名批量替换最优解决方案

以下方案按优先级从高到低排列,优先使用根源解决方案,避免长期额外性能开销:

方案1:批量替换数据库存储的旧域名(根源解决,优先使用)

大部分站点的文章内容、自定义配置、用户发布的内容都会存储在数据库中,优先处理这部分:

  • 先整站备份数据库,避免操作失误丢失数据
  • 直接执行MySQL替换命令,根据你的业务场景替换对应表名和字段名即可:
-- 通用语法
UPDATE 你的表名 SET 字段名 = REPLACE(字段名, 'http://www.oldedomain.com', 'http://www.newdomain.com');
-- 示例:替换文章表content字段中所有旧域名
UPDATE article SET content = REPLACE(content, 'http://www.oldedomain.com', 'http://www.newdomain.com');
  • 也可以写一个CI一次性运行脚本,执行完立即删除即可:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Domain_replace extends CI_Controller {
    public function index()
    {
        $old_domain = 'http://www.oldedomain.com';
        $new_domain = 'http://www.newdomain.com';
        // 按需替换对应表的对应字段即可
        $this->db->set('content', "REPLACE(content, '{$old_domain}', '{$new_domain}')", FALSE);
        $this->db->update('article');
        echo '替换完成,请立即删除本脚本';
    }
}

方案2:替换项目文件内硬编码的旧域名

  • 用编辑器的全局搜索替换功能(VSCode、PHPStorm等均支持目录级全局替换),搜索整个项目目录下的http://www.oldedomain.com,统一替换为新域名,覆盖以下场景:
    • application/views 目录下视图文件硬编码的a标签
    • 自定义类库、助手函数中写死的链接
    • JS、CSS等静态资源文件中写死的链接
  • 同步修改CI核心配置,打开application/config/config.php修改base_url参数:
$config['base_url'] = 'http://www.newdomain.com/';

建议后续生成链接统一使用CI自带的site_url()、base_url()函数生成,不要硬编码域名,后续换域名无需修改业务内容

方案3:运行时动态替换(临时过渡方案)

如果赶时间来不及修改所有数据和代码,可以用CI的钩子功能在页面输出前统一替换旧域名,无需修改原有业务代码:

  • 第一步开启钩子,打开application/config/config.php:
$config['enable_hooks'] = TRUE;
  • 第二步打开application/config/hooks.php添加钩子配置:
$hook['display_override'][] = array(
    'class'    => 'Domain_replace',
    'function' => 'replace_old_domain',
    'filename' => 'Domain_replace.php',
    'filepath' => 'hooks'
);
  • 第三步在application/hooks目录下新建Domain_replace.php:
<?php
class Domain_replace {
    public function replace_old_domain()
    {
        $CI =& get_instance();
        $output = $CI->output->get_output();
        $old_domain = 'http://www.oldedomain.com';
        $new_domain = 'http://www.newdomain.com';
        $output = str_replace($old_domain, $new_domain, $output);
        $CI->output->set_output($output);
    }
}

该方案上线速度最快,但会额外增加少量服务器性能开销,建议改完所有数据和文件后及时移除

额外保障:旧域名全局301重定向

不管使用以上哪个方案,都建议在旧域名的服务端配置301永久重定向到新域名,既可以避免用户访问收藏的旧链接失效,也能实现搜索引擎权重转移,Nginx配置示例如下:

server {
    listen 80;
    server_name www.oldedomain.com oldedomain.com;
    return 301 http://www.newdomain.com$request_uri;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:45:02