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
。 - ✅ 添加配置之后:我们的配置起到了“路径解析器”的作用:
- 它将请求路径智能地拆解:
$real_script_name
=/index.php
(真实存在的PHP文件)$path_info
=/admin/login
(路径信息)
- PHP 接收到正确的信息:
- 执行文件:
/index.php
- 路由参数:通过
$_SERVER['PATH_INFO']
获取到/admin/login
- 执行文件:
- Typecho 根据
PATH_INFO
的值/admin/login
,就能正确地将请求路由到后台登录控制器,页面成功加载。
- 它将请求路径智能地拆解:
- ❌ 未配置之前:Nginx 会错误地将整个路径
总结
通过修改Nginx的pathinfo.conf配置文件,添加关键的路径解析规则,成功解决了Typecho后台访问报404错误的问题。这个配置的核心在于正确地分离脚本文件路径和后续的路径信息(PATH_INFO),让Typecho的路由机制能够正常工作,仍有问题请在评论区留言。
1 条评论
滴!学生卡!打卡时间:20:04:22,请上车的乘客系好安全带~