1. 程式人生 > >TP5框架在nginx環境下路由報404錯誤解決方法 親測可用

TP5框架在nginx環境下路由報404錯誤解決方法 親測可用

前段時間給客戶寫了個TP5框架的後臺,主要是API呼叫,上傳到客戶伺服器後發現首頁可用,但所有內頁報404錯誤,網上一搜發現天多一樣的問題,但找了很多都是不可用的,而且都是過時的,但最終還是自己試出來了,今天貼下,親測可用。

寶塔面板windows-5.4.0+Nginx-1.12配置(Linux請使用寶塔面板,可以直接開啟配置檔案,然後根據這個修改,一樣的)

請完全按此順序執行,不然我也不清楚有沒有其他問題

1、通過寶塔線安裝好Nginx與其它環境

2、通過寶塔面板 新增 網站 (這一步很重要,寶塔會自動配置一些檔案,可以省去很多事情)

3、開啟寶塔目錄應該是(我的寶塔是裝個在D盤,路徑如下D:\BtSoft\WebSoft\

nginx\conf\vhost) 注意紅色部分,是conf\vhost目錄下

4、開啟找到對應的域名.conf檔案,比如:你的網站域名是www.xxx.com,那麼vhost目錄下就會有一個www.xxx.com.conf檔案,用記事本以外的軟體開啟編輯,你會看到如下的程式碼(軟體自動生成的)

#START-SITE
server {
	listen 80;
	server_name  www.jsq.com;
	access_log  logs/www.jsq.com.access.log;
	root   D:/wwwroot/www.jsq.com; #網站絕對路徑
	index  index.php default.php index.html index.htm default.html default.htm;
	
	include rewrite/www.jsq.com.conf;
		
	#START-ERROR-PAGE
	error_page 403 /403.html;
	error_page 404 /404.html;
    error_page 502 /502.html;
	#END-ERROR-PAGE
	
	#301-START
	#301-END	
	
	#REFERER-START
	#REFERER-END
	
	#PROXY-START
	#PROXY-END
	
	#START-SSL
	#END-SSL
	
	#START-PHP
	location ~ \.php$ {
		root   D:/wwwroot/www.jsq.com;
		fastcgi_pass   127.0.0.1:4554;#後面4554 為預設埠請勿修改
		fastcgi_index  index.php;
		fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
		include        fastcgi_params;
    }
	#END-PHP
}
#END-SITE

5、修改配置檔案如下,紅色部分是修改後的,切勿直接複製 程式碼增加不了顏色,看中文註釋

#START-SITE
server {
	listen 80;
	server_name  www.jqqq.com;
	access_log  logs/www.jqqq.com.access.log;
	root   E:/wwwroot/www.jqtest.com/public;
	index  index.php default.php index.html index.htm default.html default.htm;
	
	#include rewrite/www.jqqq.com.conf; #註釋該行,無需引用
	location / { #第一部分 起始
	    try_files $uri $uri/ /index.php$uri;
           #下面這兩個if是為了能獲取$_GET引數,不加則無法獲取
	    if ( -f $request_filename) {  
            break;  
        }  
        if ( !-e $request_filename) {  
            rewrite ^(.*)$ /index.php/$1 last;  
            break;  
        }  
	}	#第一部分 結束

	#START-ERROR-PAGE
	error_page 403 /403.html;
	error_page 404 /404.html;
    error_page 502 /502.html;
	#END-ERROR-PAGE
	
	#301-START
	#301-END
	
	
	#REFERER-START
	#REFERER-END
	
	#PROXY-START
	#PROXY-END
	
	#START-SSL
	#END-SSL
	location ~ /\.ht { #第二部分 起始
		deny all;
	} #第二部 結束
	
	#START-PHP
	location ~* \.php(.*)$ {
		root   E:/wwwroot/www.jqtest.com/public;
		fastcgi_pass   127.0.0.1:4554;
		fastcgi_index  index.php;
		fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;  #第三部分  起始
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     	fastcgi_param PATH_INFO $fastcgi_path_info;  #第三部分 結束
		fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
		include        fastcgi_params;
    }
	#END-PHP
}
#END-SITE

6、重啟Nginx 然後看看網站是否已經可以使用路由了,並且$_GET引數也可以正常使用。

注意:如果你的配置檔案,跟我的不一樣,那可能是版本問題,但大體相同,可以自行修改。