
首页能正常打开、帖子却是 404基本可以直接断定PHP 和 MySQL 都没问题故障点只可能在「伪静态重写」这一环——服务器没有把.html这类非静态文件的请求转发给 index.php于是直接甩出 404。结论Clara BBS 不需要你写复杂规则只要让服务器把「不是真实存在的文件/目录」的请求统一交给 index.php帖子页立刻恢复。先确认一件事是服务器 404还是程序 404这一步能帮你省掉一半排查时间。打开一个具体的帖子链接看 404 页面长什么样是 Nginx / Apache 自带的默认 404 页白底黑字、写着 nginx 或 Apache→ 请求根本没进到程序就是伪静态没生效往下看配置章节。是网站自己的样式、带着站点导航的 404 页 → 程序已经跑起来了问题不在伪静态。这时要看帖子本身的状态比如是否已被前台删除Clara BBS 前台删除是软删除会进回收站保留 30 天后台「帖子管理→状态筛选→回收站」可恢复或所在版块的浏览权限发生了变化。Nginx一行 try_files 就够了Clara BBS 的 URL 是系统自动识别的.html后缀形式服务器侧不做任何「美化」只做转发。规则等价于一句话文件存在就直接返回不存在就交给 index.php。在站点的 server 块里加上location / { try_files $uri $uri/ /index.php?$query_string; }改完记得nginx -t测试再 reload。几个常见坑规则加在了错误的 server 块比如加到了默认站点而不是你的域名对应的块。规则被别的 location 提前拦截或者写成了try_files $uri /index.php丢了 query string分页、搜索这类参数会失效。服务器上有多个站点同时监听 80/443请求被另一个站点吃掉了。Apache.htaccess 要生效AllowOverride 必须开Apache 用户把下面的内容放进站点根目录的.htaccessRewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA]如果放了没反应九成是主配置里目录段没允许重写覆盖需要AllowOverride All。另外确认 mod_rewrite 已启用、.htaccess 文件名前面那个点没被系统吃掉Windows 上传常见。宝塔面板用户伪静态别选错面板用户最省事的做法是站点设置→伪静态选一个通用的转发规则或直接用上面的 Nginx 片段粘贴进去保存后重载。注意两类高发误操作选了某个「框架专属」伪静态模板里面带了额外重写规则反而把.html请求拦走了。改了配置忘了保存或没 reload看着改了实际没生效。Clara BBS 没有 Composer 依赖、不需要命令行操作、也没有编译缓存所以排查时不必往这些方向想伪静态层就是唯一变量。规则对了还是 404再查这三处站点地址填写不规范后台「基本设置」里的站点地址建议带上https://和主域名避免 www 域与裸域混用导致会话丢失、跳转错乱。这一项填错时表现常常是登录态飘忽顺带引发各种异常。CDN / 反向代理CDN 只缓存了首页而没回源到正确路径或回源 Host 配置不对会出现「首页是旧的、帖子 404」。先临时回源直连 IP 验证。规则语法本身有错Nginx 配置写错会导致后续 location 不生效甚至整段被跳过用nginx -t或在面板里看错误日志最快。收尾一句话记住这套顺序先看 404 是哪一家的页面服务器默认页就修伪静态程序页面就查帖子状态与权限伪静态只做一件事——把不存在的路径转发给 index.phpNginx 用try_files $uri $uri/ /index.php?$query_stringApache 用三行 RewriteCond/RewriteRule面板用户额外确认规则保存并重载、站点地址填写规范。按这个顺序走首页能开、帖子 404 的情况基本几分钟内能定位。✅ 本文实现的问答模块已上线在线演示https://www.leleweb.cn/answers✅ 相关实现细节可参考https://www.leleweb.cn/thread-313.html