URL 更改小写了,但栏目列表不更新
时间:2026-08-12 10:00:41 来源:aliz.cn 作者:SKY 阅读:
问题完整原因 + 分步修复(栏目列表链接依旧是大写旧 URL,内容页已经成功小写)
核心根源
帝国 CMS列表页的文章链接读取数据表
filename 字段缓存;仅仅修改 ReturnInfoFileName、刷新内容页是没用的,列表静态 HTML、栏目缓存、JS‑调用缓存全部保留旧大写文件名,下面严格按照顺序操作即可一次性修好。
第一步:确认函数强制返回小写(优先排查代码漏洞)
打开
e/class/functions.php 的 ReturnInfoFileName,所有生成的文件名必须强制 strtolower(),哪怕别名、拼音也要强制小写,示例:php
运行
$name = strtolower($name);
缺少 strtolower,部分场景依旧会输出大写字符,列表缓存旧数值。
第二步:数据库批量刷新每一条资讯的 filename(最关键)
- 后台 → 系统设置 → 【数据更新中心】 操作顺序不能打乱:
- 更新缓存数据
- 更新信息页地址(强制调用 ReturnInfoFileName,重写数据表里面 filename 字段为小写)
只有执行此项,news 数据表内存储的链接才会更新,列表标签才可以读取全新小写 url
SQL 校验是否已经更新成功
sql
SELECT id,filename FROM phome_ecms_news LIMIT 30;
查看 filename 字段,全部变成小写才算成功,如果还有大写,再次执行「更新信息页地址」。
第三步:清理栏目列表缓存(绝大多数人卡在这一步)
帝国 CMS 栏目列表、灵动标签会生成缓存文件,缓存路径:
e/data/fc/ListEnews.php
清除缓存两种方式
方式一(后台可视化) 数据更新中心 → 删除栏目缓存文件帝国CMS...
方式二,直接 FTP 删除缓存文件
plaintext
e/data/fc/ListEnews.php
第四步:刷新全部栏目列表静态页
返回数据更新中心:
- 刷新所有信息栏目页
- 刷新首页
- 刷新所有自定义列表
- 刷新所有 JS 调用信息
列表页 html 是静态文件,旧的列表页面里面依旧存放旧大写链接,必须重新生成栏目 html。
第五步:清除浏览器、CDN 缓存
- Ctrl+F5 强制硬刷新
- 清空网站 CDN 缓存、宝塔缓存、nginx 缓存
- 关闭浏览器缓存进行测试
第六步、依旧无效的排查清单
- 修改完 functions‑php 没有保存上传 修改后的 php 文件没有上传覆盖服务器文件,程序仍然运行旧代码。
- 多内容模型 如果你有下载、图集模型,只更新了 news 新闻表,别的数据表 filename 没有刷新。
- 灵动标签缓存 页面使用
[ecmsinfo]灵动标签,开启了标签缓存; 编辑标签,关闭缓存或者清空标签缓存。 - 模板变量缓存、碎片缓存 后台 > 模板管理,清理所有模板碎片缓存。
第七步、永久兜底:PHP 强制链接小写
如果你害怕后续还有大写残留,可以直接在列表输出的时候强制小写,列表模板链接代码改成:
html
预览
<?=strtolower($bqsr[filename])?>
标准完整执行顺序(以后修改 URL 命名规则固定这套流程)
- 修改并上传 functions.php
- 更新缓存数据
- 更新信息页地址
- 删除栏目缓存文件 ListEnews.php
- 刷新全部栏目列表页、首页、自定义列表
- 重载 CDN / 清除浏览器缓存
本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载
发表评论
共有0条评论