帝国 CMS 伪静态需要什么组件
看完这篇你能拿到一份完整清单:帝国CMS 伪静态在 Apache、Nginx、IIS 三种服务器下分别要装哪些组件、怎么确认装没装、卡住了该查哪里。
伪静态这件事,帝国CMS 自己只做了一半——它负责告诉你"哪个地址该重写到哪段程序",真正把 /list-1-2.html 变成 /e/action/ListInfo.php?classid=1&... 的是 Web 服务器的 URL 重写组件。所以组件清单永远是"服务器重写模块 + 帝国CMS 后台配置"两半。
第一步:先分清你用的是哪台服务器
登录你的服务器,执行 curl -I 你的域名 或直接看响应头,Server: 那一行会写明是 Apache、nginx 还是 Microsoft-IIS。三者的组件完全不同,Nginx 不认 .htaccess 文件,Apache 不认 server{} 块,选错了白折腾。
第二步:Apache 环境需要三个东西
Apache 2.4(2.2 也行)+ mod_rewrite 模块 + AllowOverride All。
先查模块:CentOS/RHEL 执行 httpd -M | grep rewrite,Ubuntu/Debian 执行 apache2ctl -M | grep rewrite。看到 rewrite_module (shared) 就是有了。
没有的话:CentOS 打开 /etc/httpd/conf/httpd.conf,找到 LoadModule rewrite_module modules/mod_rewrite.so,去掉行首的 #;Ubuntu 执行 sudo a2enmod rewrite,然后 sudo systemctl restart apache2。
再改目录权限。在 httpd.conf 或站点配置文件里找到网站根目录对应的 <Directory> 段:
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
注意:
AllowOverride是None时,你放在根目录的.htaccess会被彻底忽略,页面照旧是动态地址,而 Apache 不会报任何错。这是伪静态失败最常见的原因。
Apache 还需要 PHP 以 mod_php 或 php-fpm 方式运行,两者都能配合伪静态。
第三步:Nginx 环境需要两个东西
Nginx(1.2 以上都行)+ php-fpm。
ngx_http_rewrite_module 是 Nginx 默认编译进去的,不用单独安装。执行 nginx -V 2>&1,只要输出里没有 --without-http_rewrite_module,重写功能就可用。Nginx 不能跑 mod_php,PHP 必须走 php-fpm。
重写规则写在站点的 server{} 块里,位置通常在 location / 的上方或内部。改完执行 nginx -t 测试语法,通过了再 systemctl reload nginx。
注意:Nginx 完全不读
.htaccess。如果你从 Apache 迁过来,必须把规则搬到nginx.conf,重启后才会生效。
第四步:IIS 环境需要两个东西
IIS 7 及以上 + Microsoft URL Rewrite Module 2.1,PHP 用 FastCGI 方式挂载。
URL Rewrite 模块要在微软官网单独下载安装,装完后 IIS 管理器的站点功能列表里会出现「URL 重写」图标。规则文件是站点根目录的 web.config。IIS 6 太老,得用第三方 ISAPI_Rewrite。
第五步:在帝国CMS后台生成并粘贴规则
登录帝国CMS后台(7.5 及 7.2 版本路径一致),依次点 系统 → 伪静态参数设置。这一页里勾选开启伪静态,按需填写栏目页、列表页、内容页的地址格式,比如列表页写成 list-[!classid!]-[!page!].html。
页面下方会给出对应的 Apache 与 Nginx 规则文本,选中复制,粘贴到 .htaccess 或 server{} 里。保存设置后,回后台点 系统 → 数据更新 → 刷新所有栏目页,再打开前台看地址是否已变。
注意:帝国CMS 默认后台目录是
/e/、附件目录是/d/,生成的规则里已经包含这些路径。如果你改动过目录名,必须同步修改规则里的路径,否则会出现 404。
注意:改完规则记得清空帝国CMS的「数据更新 → 更新缓存」,浏览器也要强制刷新(Ctrl+F5),不然你可能看到的是旧的动态链接。
小结
- 伪静态 = 服务器重写模块 + 帝国CMS后台配置,缺一不可
- Apache:
mod_rewrite模块 +AllowOverride All+ 根目录.htaccess - Nginx:默认自带重写模块 + php-fpm +
server{}里的规则 - IIS:URL Rewrite Module 2.1 + FastCGI +
web.config - 后台入口统一是「系统 → 伪静态参数设置」,规则可从该页直接复制
- 改完三件事:测语法、重载服务、刷新缓存
- 排查顺序:先看模块有没有装,再看配置文件有没有被读取
原文链接:https://www.gj0.com/thread-808.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。