Z-Blog PHP 开启伪静态后文章页 404:从规则到权限的完整排查

· zblog · 阅读 1
摘要

先说结论:Z-Blog 开启伪静态后文章页 404,90% 出在三个环节——① 服务器 rewrite 规则没生效;② 后台静态管理中心规则与服务器类型不匹配;③ 目录/文件权限或 .htaccess 未被允许读取。按下面顺序排查,通常 1

先说结论:Z-Blog 开启伪静态后文章页 404,90% 出在三个环节——① 服务器 rewrite 规则没生效;② 后台静态管理中心规则与服务器类型不匹配;③ 目录/文件权限或 .htaccess 未被允许读取。按下面顺序排查,通常 10 分钟内能定位。

一、先分清 404 是哪一层返回的

打开浏览器开发者工具 → Network,看文章页请求的状态码与响应头:

  • 响应头带 Server: nginx 但页面是 nginx 默认 404 页 → 服务器层没匹配到规则。
  • 返回的是 Z-Blog 自己的 404 模板 → 请求进了 PHP,但 Z-Blog 内部路由没认出来,问题在静态规则配置。
  • 返回 403 → 权限问题,不是 404。

二、Nginx 检查清单

  1. 确认站点配置里有 location / { ... } 且包含 try_files 或 rewrite 规则,并且放在 location ~ \.php 之前。
  2. 确认 index.html 不会被误当首页优先命中,导致规则被跳过。
  3. 改完必须 nginx -t 再 nginx -s reload,只保存不重载不生效。
  4. 若用了 CDN/反代,检查回源路径是否被改写。

三、Apache 检查清单

  • 确认 mod_rewrite 已启用。
  • 确认虚拟主机 AllowOverride All,否则 .htaccess 完全不生效。
  • 确认 .htaccess 存在且未被其他规则提前 [L] 截断。

四、Z-Blog 后台侧

进入后台 → 静态管理中心,检查:

  • 静态模式是否真的保存成功(有些主机因配置文件不可写导致保存静默失败)。
  • 文章 URL 规则里的别名占位符是否与实际字段一致。
  • 保存后回到「清空缓存并重建」,让路由缓存刷新。

五、权限与文件

常见于迁移后的站点:zb_users 下的配置/缓存目录不可写,导致规则文件生成了但内容为空。检查目录属主与 755/644 权限,随后重新保存一次静态规则。

六、验证

用命令行 curl -I 文章URL 看状态码,不要只靠浏览器缓存判断;同时用无痕窗口再试一次,排除浏览器缓存假象。

按上述顺序,从「哪一层返回 404」倒推,绝大多数伪静态 404 都能一次解决。