帝国 CMS 伪静态规则写法

juming
juming 初级会员超兽战士
发布于 2026-10-08 00:47 ·1 浏览 ·0 回复

照着做完,你就能让帝国 CMS 7.5 的栏目页和信息页用上 .html 结尾的伪静态地址,并掌握 Apache、Nginx 两种服务器的规则写法。

第一步:确认环境和后台入口

这一步要确认你的程序版本和服务器类型,因为规则写法完全取决于它们。

登录后台,地址通常是 http://你的域名/e/admin/。进去后在右上角能看到版本号,本教程以帝国CMS 7.5为准。再看一下服务器:Apache 还是 Nginx?不确定就问主机商,或者看宝塔面板「网站」列表里每个站点后面的类型标签。

注意:帝国CMS 7.5 的伪静态对 PHP 版本不敏感,PHP 7.4 和 8.0 都能用,但 Nginx 的 try_files 配置如果写错,会出现「CSS 加载不出来」或者「后台进不去」,改规则前先备份原配置文件。

第二步:在后台填写伪静态参数

这一步是告诉帝国CMS「你想让前台链接长什么样」,做完之后系统生成出来的链接就会套用这个格式。

路径:系统 → 系统设置 → 伪静态参数设置。

页面里会分几组输入框,常见的是「栏目页伪静态」「内容页伪静态」「标题分类页伪静态」。可用的变量是:

  • [!--classid--]:栏目 ID
  • [!--id--]:信息 ID
  • [!--classpath--]:栏目目录名(需要在栏目里填写「栏目目录名」才有值)

推荐填法:

栏目页:/list_[!--classid--].html
内容页:/show_[!--classid--]_[!--id--].html

填完点页面下方的提交按钮。

注意:不同小版本的变量名可能略有差异,以你后台页面上实际列出的变量提示为准,照抄变量的拼写,多一个横线少一个横线都会导致规则不生效。

第三步:写 Apache 规则

这一步让 Apache 把静态地址「翻译」回动态程序。

在网站根目录(和 index.php、e 目录同级)新建 .htaccess,内容如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /


RewriteRule ^list_([0-9]+)\.html$ e/action/ListInfo.php?classid=$1&ph=1 [L]

# 内容页
RewriteRule ^show_([0-9]+)_([0-9]+)\.html$ e/action/ShowInfo.php?classid=$1&id=$2&ph=1 [L]
</IfModule>

关键点是末尾的 ph=1,这是帝国CMS 识别「本次请求来自伪静态」的开关,漏掉它页面会跳回动态地址。

注意:宝塔面板建站时默认可能没开伪静态。进入「网站 → 设置 → 伪静态」,选择「自定义」再粘贴上面的规则。如果服务器是虚拟主机,确认 httpd.conf 里对应目录的 AllowOverride 是 All,否则 .htaccess 会被直接忽略。

第四步:写 Nginx 规则

Nginx 不读 .htaccess,必须在站点配置文件里写。

宝塔面板路径:网站 → 设置 → 配置文件,在 server { } 块内、location ~ \.php 之前加入:

rewrite ^/list_([0-9]+)\.html$ /e/action/ListInfo.php?classid=$1&ph=1 last;
rewrite ^/show_([0-9]+)_([0-9]+)\.html$ /e/action/ShowInfo.php?classid=$1&id=$2&ph=1 last;

保存后点「重载配置」。

注意:Nginx 里 rewrite 规则必须写在 location / 内部或 server 块顶层,顺序也要排在 PHP 解析规则之前,否则请求会先被 .php 的 location 拦截掉。改完务必在宝塔里点一次「重载配置」而不是只保存,否则不生效。

第五步:更新缓存并调整栏目生成方式

这一步让前台真正吐出伪静态链接。

路径一:系统 → 数据更新中心 → 更新所有缓存,点一下。

路径二:栏目 → 管理栏目,找到目标栏目点「修改」,切到生成选项标签,把「栏目页生成方式」和「内容页生成方式」设为动态页(不生成静态 HTML),否则系统仍然输出 /list_1.html 这种真静态地址,伪静态规则根本不会被触发。

第六步:验证

浏览器打开一条信息页,看地址栏是不是 show_1_15.html 这种形式并能正常显示内容。再打开 F12 的 Network,随便点几个栏目,确认返回状态码是 200 而不是 404 或 301 跳回动态地址。

注意:如果出现 404,先把伪静态参数临时改回动态地址测试,能通说明是规则写错;如果连动态地址都不通,那就是缓存或生成方式没改对。

小结

  • 后台「系统 → 系统设置 → 伪静态参数设置」决定链接长什么样,服务器规则负责把它翻译回动态程序。
  • ph=1 参数必须带,否则帝国CMS 不认伪静态请求。
  • Apache 写 .htaccess 并确认 AllowOverride All;Nginx 写站点配置文件并重载配置。
  • 栏目生成方式要设为动态页,否则伪静态规则永远触发不到。
  • 改完记得「更新所有缓存」。
版权声明:本文来自 GJ站长论坛《帝国 CMS 伪静态规则写法》
原文链接:https://www.gj0.com/thread-652.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~