Z-Blog PHP 开启伪静态后文章页 404:从规则到权限的完整排查
摘要
先说结论: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 检查清单
- 确认站点配置里有
location / { ... }且包含try_files或rewrite规则,并且放在location ~ \.php之前。 - 确认
index.html不会被误当首页优先命中,导致规则被跳过。 - 改完必须
nginx -t再nginx -s reload,只保存不重载不生效。 - 若用了 CDN/反代,检查回源路径是否被改写。
三、Apache 检查清单
- 确认
mod_rewrite已启用。 - 确认虚拟主机
AllowOverride All,否则 .htaccess 完全不生效。 - 确认 .htaccess 存在且未被其他规则提前
[L]截断。
四、Z-Blog 后台侧
进入后台 → 静态管理中心,检查:
- 静态模式是否真的保存成功(有些主机因配置文件不可写导致保存静默失败)。
- 文章 URL 规则里的别名占位符是否与实际字段一致。
- 保存后回到「清空缓存并重建」,让路由缓存刷新。
五、权限与文件
常见于迁移后的站点:zb_users 下的配置/缓存目录不可写,导致规则文件生成了但内容为空。检查目录属主与 755/644 权限,随后重新保存一次静态规则。
六、验证
用命令行 curl -I 文章URL 看状态码,不要只靠浏览器缓存判断;同时用无痕窗口再试一次,排除浏览器缓存假象。
按上述顺序,从「哪一层返回 404」倒推,绝大多数伪静态 404 都能一次解决。
2026年10月22日 10:38
前后30天 · 点日期看归档
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日
11月20日
11月21日