關於Typecho在Nginx環境下登錄或是查看文章404的情況

前言
網站是昨天晚上搭建的,但是過程並不順。在我安裝完成的一瞬間,我立馬進入後臺準備來一波瘋狂操作,然後睡覺。可萬萬沒想的是我登錄不進去網站。不過在我千辛萬苦的奮鬥下終於完成了。

打卡文章頁面報錯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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章