AI摘要

本文介绍了如何解决Typecho博客安装后后台404报错的问题。问题根源在于Nginx对pathinfo的支持不够完善,导致Typecho的核心路由机制无法正常工作。解决方案是修改Nginx的pathinfo.conf配置文件,添加关键的路径解析规则,以正确分离脚本文件路径和后续的路径信息(PATH_INFO),从而使Typecho的路由机制能够正常工作。

错误情况

这个是在安装Typecho博客后,博客首页可以打开,但进入后台管理面报错404

在宝塔面板中设置了伪静态也不行

于是就在网上搜教程,搜到的结果都是在最开始安装LNMP的时候未勾选PATH_INFO或者是Nginx对pathinfo的支持不够完善,需要改nginx的配置

但是我试了好几种方法都未奏效,好在我有两台服务器,对比排查后我就发现了解决方法。

解决方案

1.找到/www/server/nginx/conf文件夹中的pathinfo.conf

这个配置文件应该就是pathinfo的配置文件,可以看到,这里面是空的。

2.添加配置信息

把下面的整块配置代码复制进去

set $real_script_name $fastcgi_script_name;

# 分离路径:/index.php/admin → [脚本部分] + [路径信息]
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
        set $real_script_name $1;
        set $path_info $2;
 }

# 确保PHP获取到正确的执行文件路径
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;

# 将路径信息传递给PHP(Typecho赖以生存的变量)
fastcgi_param PATH_INFO $path_info;

添加保存后,也无需重启,页面正确加载出来。

错误解析

  • Typecho的核心路由机制:Typecho 非常依赖PATH_INFO这个环境变量来实现其友好的URL。例如:

    • 后台登录地址 http://yourdomain.com/admin/ 实际会被路由到 /index.php/admin/
    • 文章地址 http://yourdomain.com/archives/123/ 实际会被路由到 /index.php/archives/123/
  • 404错误的根源
    当你访问 /index.php/admin/login 这样的地址时:

    • ❌ 未配置之前:Nginx 会错误地将整个路径 /index.php/admin/login 当作一个实际存在的文件路径传递给PHP处理。PHP自然找不到这个文件,于是返回 404 Not Found
    • ✅ 添加配置之后:我们的配置起到了“路径解析器”的作用:
      1. 它将请求路径智能地拆解:
        • $real_script_name = /index.php (真实存在的PHP文件)
        • $path_info = /admin/login (路径信息)
      2. PHP 接收到正确的信息:
        • 执行文件:/index.php
        • 路由参数:通过 $_SERVER['PATH_INFO'] 获取到 /admin/login
      3. Typecho 根据 PATH_INFO 的值 /admin/login,就能正确地将请求路由到后台登录控制器,页面成功加载。

总结

通过修改Nginx的pathinfo.conf配置文件,添加关键的路径解析规则,成功解决了Typecho后台访问报404错误的问题。这个配置的核心在于正确地分离脚本文件路径和后续的路径信息(PATH_INFO),让Typecho的路由机制能够正常工作,仍有问题请在评论区留言。

如果觉得我的文章对你有用,请随意赞赏
END
本文作者:
文章标题:Typecho安装后后台 404 报错解决
本文地址:https://blog.ybyq.wang/archives/596.html
版权说明:若无注明,本文皆Xuan's blog原创,转载请保留文章出处。