关于Typecho在Nginx环境下登录或是查看文章404的情况

发布时间 2023-05-30 22:16:07作者: 阿波罗任先生

前言
网站是昨天晚上搭建的,但是过程并不顺。在我安装完成的一瞬间,我立马进入后台准备来一波疯狂操作,然后睡觉。可万万没想的是我登录不进去网站。不过在我千辛万苦的奋斗下终于完成了。

打卡文章页面报错404


登录后台看看,莫得问题,可以正常打开


遗憾的是我输入账号密码登录点击登录时,404!!!


环境
服务器环境 : Windows Server 2012 R2 Datacenter (build 9600) x64 (Py3.8.6)
宝塔面板 : 7.1.0 免费版
运行环境 : Nginx 1.18.0 + PHP 7.2
数据库环境 : Mysql 5.5.62
探索
这是我在百度上找到的操作,原文地址 : https://qq52o.me/2230.html。

Nginx 服务器点击前台链接或者后台登录时出现 404, not found
官方给的解决方式是一般的出现这种情况时,nginx.conf 里的 location 设置都是类似这样

location ~ .*\.php$
1
要支持 pathinfo,要改成

location ~ .*\.php(\/.*)*$
1
在某些老版本的 php 里面,可能还要打开 php.ini 里的 cgi.fix_pathinfo

cgi.fix_pathinfo = 1
1
我没有按照这个来,页面 404 一般都是伪静态的问题,在军哥的一键包中有伪静态设置,在添加的时候默认使用了 other.conf,这里要换成 > typecho.conf

军哥的一键包中默认已经有了一些常用的 Nginx 伪静态配置文件,可以直接输入名称进行使用

我选择使用 wordpress 的配置,修改原来的伪静态配置,配置文件在:/usr/local/nginx/conf/vhost/域名.conf

把 include other.conf; 改为 include wordpress.conf;

执行:/etc/init.d/nginx restart 重启生效

然后访问是没有问题了,但是点击登陆又是 404,真是问题一个接一个

把 enable-php.conf 修改为下面这个配置 然后重启 nginx 服务即可

location ~ [^/]\.php(/|$)
{
#try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
1
2
3
4
5
6
7
8
一波骚操作下来,并没有什么用,问题还是没有解决。我是真的睡不着,继续在度娘中寻找着。。。功夫不负有心人,我又找到一些相关帖子。

地址1 :https://bbs.vpser.net/thread-12837-1-1.html
地址2 :https://www.jsoo.cc/820168.html
地址3 :https://www.jianshu.com/p/18d2a24f2718

没错,他们都是相互之间抄一抄,但是按照他们的方法我的问题还是没有解决。

解决
在我忙忙碌碌了几个小时后,我终于解决了这一问题。

原文地址 :https://www.polarxiong.com/archives/typecho-404-error.html

文章上写的比较复杂,可能是搭建环境不一样,我只是实现了一步操作就解决了该问题。

if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
1
2
3
4
5
6
7
8
9
在我把代码写在配置文件中的时候,意外又出现了!!!

 

给我显示了一个网站创建成功的页面,想一想不可能啊。

 

我仔细查看了代码并对其做了位置调换,终于成功解决了这个问题!不容易啊,哈哈。
#解决Typecho 文章/登录 404
if (-f $request_filename/index.php){
rewrite (.) $1/index.php;
}
if (-f $request_filename/index.html){
rewrite (.) $1/index.html break;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}

 

总结
大部分站长给出的结论是没有开启 phpinfo ,但是php7.2安装的时候就自动开启了phpinfo。这是因为Nginx对phpinfo支持不好导致的,需要自己手动添加地址重写代码。
————————————————
版权声明:本文为CSDN博主「小彭同学继续努力~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_27134147/article/details/119980731

 

================================

我最终的解决是 宝塔 nginx  php 7.3   

在伪静态里  写入

if (-f $request_filename/index.php){
rewrite (.) $1/index.php;
}
if (-f $request_filename/index.html){
rewrite (.) $1/index.html break;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}