PbootBiz是独立维护的PbootCMS第三方资源与工具站,与官方无隶属关系;软件版本、授权政策及公告请以官方信息为准。
常见问题

PbootCMS伪静态后页面404的常见原因与解决方法

汇总PbootCMS开启伪静态后出现404的几类常见原因:重写规则未配置、Nginx配置缺失、缓存未清理、路径写死,逐一给出解决方案。

问题现象:后台开启伪静态后,前台首页、栏目页或文章页出现 404,而兼容模式(带问号地址)正常。本文按概率从高到低列出原因与解法。

一、未配置服务器重写规则(最常见)

开启后台伪静态开关后,必须同步配置服务器重写规则,二者缺一不可。

Nginx:在站点配置中加:

location / {
    if (!-e $request_filename) {
        rewrite  ^(.*)$  /index.php?s=$1  last;
        break;
    }
}

Apache:确认源码包 .htaccess 存在且生效(虚拟主机需开启 AllowOverride All):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1 [QSA,PT,L]

二、Nginx 的 try_files 与伪静态规则冲突

部分环境(如宝塔默认配置)已存在 try_files 规则,与 PbootCMS 规则叠加会冲突。检查站点配置,删除冲突的 rewrite 行,只保留一套。修改后记得 nginx -s reload 重载。

三、伪静态规则放在错误的位置

PbootCMS 规则必须放在 location / 块内,而不是 location ~ .php 块内。放在错误位置会导致所有页面 404 或 500。

四、缓存未清理

开启伪静态后,之前缓存中可能存有兼容模式的链接。处理:

  • 后台「缓存管理 - 清除缓存」

  • 或删除 runtime/ 目录下的缓存文件

五、模板中硬编码了旧链接

检查模板是否有写死的带问号地址,如 。应改用标签动态输出:{pboot:sitepath}/about/

六、部分页面 404、部分正常

通常是栏目别名或文章别名冲突,或对应栏目/文章状态为隐藏/未发布。到后台检查该栏目的「状态」和「隐藏」设置。

七、快速排查清单

  • 后台伪静态开关已开启?

  • 服务器重写规则已配置并重载?

  • 规则是否位于 location / 内且无冲突?

  • 缓存已清理?

  • 单页/栏目状态为正常发布?

按此顺序排查,90% 的伪静态 404 都能解决。仍无法解决时,可暂时关闭伪静态开关回到兼容模式应急,再逐项排查。

本文由PbootBiz整理发布,转载请保留来源信息。