什么是 cfg_basehost?
cfg_basehost 是 DedeCMS 在运行时动态生成的一个全局 PHP 变量,它存储了您网站在数据库中配置的根域名。

它就是一个存放你网站主 URL(https://www.yourdomain.com)的“容器”。
它的值从哪里来?
cfg_basehost 的值来源于 DedeCMS 的后台设置,具体路径是:
后台 → 系统 → 系统基本参数 → 核心设置 → 网站根网址
在这个输入框中填写的值,就会被系统读取并赋值给 cfg_basehost 变量。

重要提示:
- 必须包含协议头:这里的值应该填写完整的 URL,包括
http://或https://。 - 不要带末尾的斜杠:应填写
https://www.yourdomain.com,而不是https://www.yourdomain.com/,虽然系统有时会自动处理,但规范的写法能避免很多潜在问题。 - 区分 HTTP 和 HTTPS:如果你的网站启用了 SSL 证书,请务必填写
https://开头的地址,这对浏览器地址栏的“安全锁”标识和搜索引擎的收录都有影响。
cfg_basehost 有什么用?
cfg_basehost 的核心作用是为全站生成绝对 URL,在 DedeCMS 中,几乎所有需要生成外部链接的地方都会使用它,以确保生成的链接是完整、可访问的。
它的主要应用场景包括:
a. 生成文章/栏目的绝对链接
这是最常见的用途,在 DedeCMS 的模板引擎中,{dede:field} 标签在处理如 arcurl(文章链接)、typeurl(栏目链接)等字段时,会自动调用 cfg_basehost 来拼接出完整的 URL。

示例:
在你的文章列表模板 list_article.htm 中,有这样一行代码:
<a href="{dede:field name='arcurl'/}">{dede:field name='title'/}</a>
系统在解析时,实际生成的 HTML 可能是这样的:
<a href="https://www.yourdomain.com/a/2025/12345.html">这是一篇示例文章</a>
这里的 https://www.yourdomain.com cfg_basehost 的值。
b. 调用网站Logo的链接
在网站的头部模板 head.htm 或其他通用模板中,Logo 的链接通常是这样写的:
<a href="{dede:global.cfg_basehost/}/"><img src="{dede:global.cfg_cmsurl/}/images/logo.png" /></a>
这里的 {dede:global.cfg_basehost/} 直接输出了网站的根网址,点击 Logo 就能返回首页。
c. 生成RSS、Sitemap、网站地图等链接
在页面的 <head> 部分,DedeCMS 会自动添加 RSS 订阅等链接:
<link rel="alternate" type="application/rss+xml" title="RSS" href="{dede:global.cfg_basehost/}/rss.php" />
这样浏览器和订阅工具就能正确找到你的 RSS 地址。
d. 在PHP代码中直接调用
如果你在自定义的 PHP 文件或插件中需要获取网站根网址,可以直接调用这个全局变量:
<?php $homeUrl = $cfg_basehost; echo "网站首页地址是:" . $homeUrl; ?>
常见问题与解决方法
网站首页链接错误或显示IP地址
现象:
- 点击网站 Logo 或“首页”链接,跳转到了
http://123.456.789.10(你的服务器IP)而不是你设置的域名。 - 文章、栏目等链接都带有 IP 地址。
原因:
数据库中 cfg_basehost 的值被错误地设置为了服务器的 IP 地址,或者为空。
解决方法:
- 登录 DedeCMS 后台。
- 进入 系统 → 系统基本参数 → 核心设置。
- 找到 网站根网址 这一栏。
- 将其修改为你的正确域名,
https://www.yourdomain.com。 - 点击“保存更改”。
- 清理浏览器缓存,并检查网站是否恢复正常。
网站同时支持 HTTP 和 HTTPS,但链接混乱
现象:
你访问的是 https:// 开头的地址,但生成的部分链接(如CSS、JS、图片)仍然是 http:// 开头的,导致浏览器安全警告(混合内容)。
原因:
cfg_basehost 设置为 http://,但你的服务器已经配置了 SSL,DedeCMS 在生成资源链接时没有自动判断协议。
解决方法:
- 按照上面的方法,进入后台,将 网站根网址 修改为
https://www.yourdomain.com。 - 如果你的网站需要同时兼容 HTTP 和 HTTPS(例如在做跳转),可以在模板中使用更灵活的写法,但最根本的解决方法是确保后台配置与当前访问协议一致。
更换域名后,旧域名链接仍然存在
现象:
你把网站从 old-domain.com 迁移到了 new-domain.com,但后台的 cfg_basehost 还没改,导致所有链接都指向旧域名。
解决方法:
- 修改后台配置:按照上述方法,将
cfg_basehost修改为https://new-domain.com。 - 修改数据库:如果网站内容很多,文章、栏目等数据中的旧域名也需要批量替换,这通常需要直接操作数据库,使用 SQL 的
UPDATE和REPLACE命令来替换old-domain.com为new-domain.com。操作数据库前务必备份数据! - 301重定向:在服务器层面(如 Nginx 或 Apache)配置 301 重定向,将旧域名的所有请求永久重定向到新域名,这对SEO非常重要。
cfg_basehost 是 DedeCMS 的一个基石性配置变量,它虽然只是一个简单的网址,却决定了整个站点的链接体系,保持其值的正确性,是确保 DedeCMS 网站正常访问、用户体验良好以及搜索引擎优化的基本前提。
当你遇到网站链接不正确、无法访问或显示IP地址时,第一要检查的就是这个配置项。
