帝国CMS默认情况下,文章链接和正文图片可能以相对路径形式保存或输出。相对路径在站点内部跳转没有问题,但一旦文章被分享到站外、被采集或者做RSS订阅,地址就很容易失效。要把文章页面的相对地址改为绝对地址,需要从系统参数、模板标签以及历史数据三个方面同时处理。只改一处往往不能彻底解决,尤其已经发布的大量文章内容需要单独处理。

相对地址与绝对地址的区别及影响
相对地址是相对于当前页面或站点根目录的路径,常见形式如 /e/public/InfoView.php、../images/logo.png 或者直接是 d/file/20250301/abc.jpg。它在网站内部能正常解析,因为浏览器会根据当前域名自动补全。一旦文章被复制到外部平台、发送到邮件或生成RSS订阅,脱离了原站点环境,这些相对路径就无法指向正确资源。
绝对地址则是完整的URL,例如 https://www.ipipp.com/d/file/20250301/abc.jpg。无论文章内容出现在哪里,只要域名和文件路径不变,链接就能直接访问。对于帝国CMS文章页面来说,标题链接、栏目链接、分页链接以及正文中的图片、附件链接都应当使用绝对地址。这样做有利于搜索引擎收录、社交分享和第三方平台展示。
两者对比可以看下面这份表格:
| 地址类型 | 示例 | 站外访问结果 |
|---|---|---|
| 相对地址 | /d/file/20250301/abc.jpg | 无法访问,域名缺失 |
| 绝对地址 | https://www.ipipp.com/d/file/20250301/abc.jpg | 可以直接打开 |
帝国CMS的文章内容模型中,标题地址通常由系统生成,但模板书写方式会直接影响最终输出是相对还是绝对。正文内容字段中插入的图片,则更多地依赖后台的附件设置以及发布时保存的路径。
后台一键设置绝对地址的核心步骤
第一步要做的是确认帝国CMS后台的网站地址填写正确。登录后台,进入系统,选择系统参数设置,在网站地址一栏填写完整的域名,例如 https://www.ipipp.com。注意结尾一般不要加斜杠,避免生成双斜杠地址。填写后点击保存。这个设置会影响帝国CMS部分动态调用生成的链接,也会作为模板中站点地址变量的输出值。
第二步是检查附件相关设置。进入系统,再进入系统参数设置,找到附件设置或图片链接设置相关选项。不同版本的帝国CMS可能在信息设置或附件设置里提供附件地址前缀。如果这里填写了完整的域名,那么新发布文章时插入的图片会直接保存绝对地址。但必须留意,这个设置只对之后新发布的内容有效,对已经存在的文章字段不起作用。
第三步是清理缓存并重新生成。后台顶部找到数据更新,依次执行更新数据库缓存、更新首页、更新栏目页、更新所有信息页。如果网站开启了静态生成,这一步不能省略,否则哪怕数据库已经修改,前端访问的仍然是旧HTML文件。
模板中调用绝对地址的常见方法
帝国CMS内容页模板中,文章标题链接通常写在文章列表或内容页的上一篇、下一篇区域。如果模板直接使用 titleurl 标签,输出结果可能只是相对路径。要实现绝对地址,可以在模板里加上站点地址变量 news.url。例如标题链接可以写成:
<a href="[!--news.url--][!--titleurl--]">[!--title--]</a>
其中 news.url 是帝国CMS内置的网站地址变量,对应后台填写的网站地址;titleurl 是文章标题的相对路径。两者拼接后,就能输出完整的绝对地址。同样的道理,栏目链接、列表分页链接、封面图地址都可以用 news.url 加原有相对标签的方式处理。
有些开发者习惯直接写死域名,比如 href="https://www.ipipp.com/[!--titleurl--]"。这种方法虽然也能实现,但一旦更换域名,模板里所有写死的地方都要手动修改,维护成本较高。更推荐使用 news.url 变量,后台修改网站地址后,模板无需改动即可自动跟随。
如果模板中使用了 PHP 标签,也可以直接调用全局变量。帝国CMS模板中可以通过 $public_r[newsurl] 获取站点地址。例如:
<a href="$public_r[newsurl][!--titleurl--]">文章标题</a>
这种方式适合对模板语法比较熟悉的用户。无论哪种写法,修改后都要更新模板缓存并重新生成相关页面。
已发布文章内容的批量替换处理
后台设置和模板修改只能保证后续新内容正确,已经发布到数据库里的文章正文仍然可能保存的是相对路径。比如早先发布的文章,正文图片路径是 /d/file/20250101/111.jpg。要全部改成绝对地址,需要对数据库中的内容字段进行批量替换。
帝国CMS的文章模型默认数据表为 phome_ecms_article,内容字段为 newstext。如果修改了表前缀,需要找到对应的实际表名。替换逻辑很简单,把相对路径的开头部分统一替换为完整域名。例如:
update phome_ecms_article set newstext = replace(newstext, '/d/file/', 'https://www.ipipp.com/d/file/') where newstext like '%/d/file/%';
执行这条SQL前必须先备份数据库。操作路径是进入帝国CMS后台,找到系统,再进入备份与恢复,先做一次数据备份。然后进入系统下方的执行SQL功能,粘贴上面的语句并执行。执行完成后,文章正文中的图片路径就会自动变为完整URL。
需要注意的是,不同内容模型的表名不一样。新闻模型可能是 phome_ecms_news,下载模型可能是 phome_ecms_download,自定义模型也有各自的表名。如果网站启用了多个模型,就需要对每个内容表分别执行对应的替换语句。此外,正文中除图片外,附件下载链接、内链等也可能使用相对地址,替换时可以根据实际情况多写几条SQL,把 /e/、/d/file/ 等常见相对前缀统一补全。
替换完成后,不要忘记再次进入数据更新,重新生成所有信息页。因为静态页面必须重新生成,前台才会显示修改后的绝对地址。
设置后验证与常见问题排查
完成以上操作后,需要验证效果。打开文章前台页面,查看源代码,确认标题链接、正文图片地址均以 http 或 https 开头。可以复制正文中的图片链接到浏览器地址栏直接访问,如果能正常打开,说明替换成功。还可以把文章分享到微信、QQ等平台测试,查看缩略图和链接是否正常。
常见问题之一是出现双斜杠。比如网站地址填写的结尾带了斜杠,而 titleurl 本身又以斜杠开头,导致生成 https://www.ipipp.com//e/public/InfoView.php 这样的地址。遇到这种情况,先检查后台网站地址是否多填了斜杠,再检查模板拼接处是否重复添加了斜杠。
另一个常见问题是HTTPS跳转。如果网站启用了HTTPS,但后台网站地址仍然填写的是HTTP,部分环境下可能被浏览器拦截混合内容。修改网站地址为 https 后,还需要重新生成所有页面,并清理浏览器缓存后再测试。如果服务器配置了强制HTTPS跳转,即使填写HTTP,访问时也会被跳转到HTTPS,但最稳妥的做法仍是在后台直接填写HTTPS地址。
如果后台使用执行SQL功能时提示没有权限,可以检查当前管理员组是否开启了执行SQL权限。也可以登录数据库管理工具,比如 phpMyAdmin,在确认表前缀和字段名后手动执行相同的UPDATE语句。执行前务必确认数据库表名和字段名,避免误替换其他内容。
还有用户会忽略CDN加速域名。如果网站使用了独立CDN域名,例如静态资源走 cdn.ipipp.com,那么正文图片的绝对地址应该替换为CDN域名,而不是源站域名。替换SQL中的域名部分可以相应修改为 https://cdn.ipipp.com/d/file/,这样既能实现绝对地址,又能保持CDN加速效果。
总之,帝国CMS文章页面相对地址改绝对地址并不是单一操作,而是后台参数、模板标签和历史数据三者配合。先把后台网站地址设置正确,再在模板中使用 news.url 变量拼接地址,最后对存量内容执行SQL批量替换并重新生成,就能彻底解决相对路径带来的各种访问问题。