当您需要将Discuz论坛从老域名切换到新域名时,务必在程序、服务器和SEO三个层面同步进行修改,以确保访问者的链接不会失效,同时保持搜索引擎对老域名的权重能够完整传递到新域名。

第一步,登录Discuz后台,进入“全局”→“站点URL”,将“站点地址”和“论坛地址”修改为新域名。保存后系统会自动更新数据库中的站点路径,但仅靠这一步仍无法实现对旧链接的301永久跳转。
第二步,打开Discuz根目录下的config/config_global.php(如果是X3.5则对应config/config_global.php),找到并修改以下两项:
$_config['siteurl'] = 'http://新域名/';
$_config['url'] = 'http://新域名/';
保存后,Discuz在生成内部链接时会直接使用新域名,避免再次出现老域名的链接。
第三步,使用.htaccess实现301永久重定向。在Discuz根目录的.htaccess(如果没有可自行创建)加入以下规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.老域名.com [NC,OR]
RewriteCond %{HTTP_HOST} ^老域名.com [NC]
RewriteRule ^(.*)$ http://新域名.com/$1 [L,R=301]
这样,所有访问老域名的请求都会被301重定向到对应的新域名页面,搜索引擎会逐步将权重转移。
第四步,登录域名服务商后台,将老域名的DNS解析指向新域名所在的服务器,或直接将老域名的A记录指向新域名的IP。随后在Discuz后台“工具”“更新缓存”中执行“清空缓存”,确保所有生成的静态路径已更新。
注意事项:
1. 确保新域名已经完成备案(若需要);
2. 检查Discuz插件、模板中是否存在硬编码的老域名链接,需要手动替换;
3. 若使用CDN或反向代理,请同步在CDN控制台配置301跳转规则,避免被缓存。
常见问题排查:
· 访问老域名出现“Too many redirects”循环 → 检查.htaccess规则是否同时匹配了新域名;
· 后台登录后页面仍然显示老域名 → 确认config_global.php中的$_config['siteurl']已正确修改并保存;
· 搜索引擎仍收录老域名 → 提交老域名的301状态并在百度站长平台/Google Search Console中更新地址。
完成验证:在浏览器中直接访问老域名的任意帖子,检查是否返回HTTP 301状态码并自动跳转到新域名对应的页面;同时使用“curl -I http://老域名/”命令确认返回的Location头部指向新域名。

查看详情

查看详情