Typecho 安装其实非常简单,只要配置一下数据库等基本信息就可以快速完成安装,当你非常具有成就感,准备点开后台面板的时候,呜嗷,页面显示 404 Not Found,好吧,emmm......
没办法,做开发就是这么苦逼,每天面对各种各样的问题,然后焦头烂额的去一个个解决,振作起来,分析原因...
既然是 404 那就是文件找不到了,直接访问文件试试,.../typecho/index.php 发现可以访问,然后观察一下地址链接,类似 index.php/xxx 形式,接着新建一个 test.php 文件,在浏览器直接访问可以,加上路由模式 test.php/id/1,出现了,404
问题找到了,没有开启 PHP 的 Pathinfo,以 LNMP 一键安装演示,找到 Nginx 的配置文件,编辑,将载入的 enable-php.conf 配置替换成 enable-php-pathinfo.conf
重启下 Nginx
sudo lnmp nginx reload
再次访问,还是404,不过测试 test.php/id/1 这个地址是可以访问的,说明配置生效了,那唯一原因就是伪静态肯定出了问题。
找到 Typecho 的路由规则(LNMP自带)
/usr/local/nginx/conf/rewrite/typecho.conf
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
仔细观察发现问题了,它将请求URI重定向到网站根目录下的 index.php ,因为我是把 Typecho 装在二级目录,所以明显是加载了该伪静态规则导致,编辑 Nginx 配置文件 nginx.conf,果然是自己手贱,开了伪静态,果断注释掉。
重启下 Nginx, 问题解决。
需要注意的是,Typecho 是支持后台开启伪静态的,如果后台开启了,记得在 Nginx 加载该伪静态规则(如上 typecho.conf)。
还有如果是安装在二级目录,还需要进一步修改伪静态规则,修改如下:
location /typecho/ {
if (!-e $request_filename) {
rewrite ^(.*)$ /typecho/index.php$1 last;
}
}
由于 Nginx 并不会动态加载配置,所以改完记得重启下 Nginx。
提示:本文以 LNMP 坏境为例演示了解决此问题的案例,其它环境请参照文章提到问题出现的原因去自由处理。