ZBlogCMS 伪静态该如何配置

chinaz
chinaz 正式会员超兽战士
发布于 2026-10-07 06:47 ·0 浏览 ·0 回复

照着这篇做完,你能在 Apache、Nginx、IIS(含宝塔面板)三种环境下把 ZBlogPHP 的伪静态彻底配好,并在出现 404 时知道从哪一层排查。

第一步:在后台把 URL 模式切成「伪静态」

这一步决定 ZBlogPHP 是否生成不带 index.php 的链接,做完后你就能看到该用哪套规则。

登录后台(默认地址 http://你的域名/zb_system/login.php),左侧菜单点 「网站设置」→「静态管理」。页面顶部有三个单选项:动态、伪静态、纯静态,选中 「伪静态」,然后点页面下方的 「提交」 按钮。

提交后,页面下半部分的 「伪静态规则」 文本框会自动显示当前应该使用的规则。文本框上方有服务器类型切换(Apache / Nginx / IIS / IIS7+),点 「复制」 按钮把规则复制到剪贴板,下一步直接用。

注意:本文以 Z-BlogPHP 1.7.3 为例,1.5 / 1.6 版本的菜单位置一致,只是按钮文案可能叫「保存」。如果你之前选过「纯静态」,必须先切回「伪静态」或「动态」,否则规则不生效。

第二步:Apache 环境写 .htaccess

这一步让 Apache 把不存在的路径转发给 index.php,做完后文章页地址会变成 /post/1.html 这类形式。

用 FTP 或主机面板的文件管理器,进入网站根目录(和 index.php、zb_system 同一层),新建或编辑文件 .htaccess,粘贴后台复制来的规则。典型内容如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

保存后访问一篇未登录状态下的文章页验证。

注意:三个前提必须同时满足——Apache 已加载 mod_rewrite 模块、站点配置里 AllowOverride All、.htaccess 编码为 UTF-8 无 BOM。另外 Windows 系统不允许直接新建以点开头的文件,请用面板文件管理器创建,或先建 htaccess.txt 再重命名。

第三步:Nginx 环境(含宝塔)配置

这一步让 Nginx 把请求交给 PHP 入口,做完后 Nginx 站点同样支持无 index.php 的链接。

宝塔面板用户:登录宝塔 → 左侧 「网站」 → 找到你的站点,点右侧 「设置」 → 顶部标签 「伪静态」 → 下拉框选择 「zblog」 模板(没有就选「自定义」),把后台复制的规则粘进输入框 → 点 「保存」。

手动配置 Nginx 的用户:编辑站点配置文件(一般在 /www/server/panel/vhost/nginx/你的域名.conf 或 /etc/nginx/conf.d/站点.conf),在 server { } 块内加入:

location / {
    if (-f $request_filename/index.html) {
        rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php) {
        rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename) {
        rewrite (.*) /index.php;
    }
}

保存后执行 nginx -t 检查语法,通过再 systemctl reload nginx 或 nginx -s reload。

注意:宝塔用户不要在「配置文件」里手写这段规则,面板重载时会覆盖。改完 Nginx 一定要 reload,只保存文件不 reload 等于没改。

第四步:IIS 环境配置

这一步让 IIS 通过 URL Rewrite 模块支持伪静态,做完后 Windows 服务器也能正常访问。

先安装 URL Rewrite 2.0 模块(微软官网下载,装完重启 IIS)。然后在 IIS 管理器 → 你的站点 → 「URL 重写」,右侧点 「导入规则」,把后台复制的 web.config 内容粘贴进去,或者直接把规则文件放进网站根目录。若是老版本 IIS 用 ISAPI_Rewrite,则把后台给的 httpd.ini 规则写入站点根目录同名文件。

第五步:验证与 404 排查

这一步确认配置真正生效。打开一篇文章,地址栏应该是 域名/post/xxx.html 而不是 域名/index.php?post=xxx。命令行验证:curl -I http://你的域名/post/1.html,返回 HTTP/1.1 200 OK 即成功。

如果首页正常、文章页 404:八成是规则没加载(Apache 查 AllowOverride,Nginx 查是否 reload,宝塔查是否保存成功)。如果分类页、标签页 404:去后台 「网站设置」→「静态管理」 重新提交一次,再到后台首页点 「清空缓存并重新编译模板」。如果所有页面都 500:规则语法写错了,先注释掉规则恢复访问。

注意:切换伪静态后,搜索引擎已收录的 index.php? 动态链接会失效。可以在 .htaccess 或 Nginx 里保留动态入口,或者接受一段时间的收录波动。

小结

  • 后台 「网站设置」→「静态管理」 选「伪静态」并提交,是整件事的开关。
  • 规则一定用后台「复制」功能拿到的官方版本,别手抄网上的旧规则。
  • Apache 看 .htaccess + mod_rewrite + AllowOverride All;Nginx 用宝塔「伪静态」输入框、改完必须 reload;IIS 装 URL Rewrite 2.0。
  • 报错先分层排查:500 是语法错,404 是规则没生效,只有分类页异常多半是缓存。
  • 配置完成后清一次缓存并重新编译模板,再用 curl -I 验证状态码。
版权声明:本文来自 GJ论坛《ZBlogCMS 伪静态该如何配置》
原文链接:https://www.gj0.com/thread-132.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~