程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> thinkphp nginx php-fpm url rewrite 導致 404 錯誤,thinkphpnginx

thinkphp nginx php-fpm url rewrite 導致 404 錯誤,thinkphpnginx

編輯:關於PHP編程

thinkphp nginx php-fpm url rewrite 導致 404 錯誤,thinkphpnginx


thinkphp nginx php-fpm url rewrite 導致 404 錯誤

之前thinkphp的系統部署在apache上,考慮到在並發性能nginx比apache強悍得多,所以在centos上以 nginx+php-fpm模式重新部署了thinkphp系統,結果發現諸如

 

  1 /index.php/home/user/verify

 

此類的url nginx會報404錯誤,但是改成

 

  1 /index.php?s=/home/user/verify

 

之後卻能夠訪問,這說明前一種url nginx不支持,那為啥會不支持呢?要解決這個問題首先要明白thinkPHP的幾種url模式。

thinkPHP URL模式

1. pathinfo 模式

 

  1 /index.php/home/user/verify

 

這種url格式,需要服務器支持pathinfo才行

2. rewrite 模式

 

  1 /?s=/home/user/verify

 

去掉index.php的偽靜態模式

3. 兼容模式

普通的模式加s=/參數/或者m=model&a=action

thinkPHP URL模式配置

在文件 /Application/Common/conf.php 中修改 URL_MODEL 的值

 

  1 'URL_MODEL' => 3

 

nginx pathinfo模式配置

nginx默認是不支持pathinfo模式的,需要手動添加rewrite規則來支持

1. 打開/nginx/conf/vhost目錄下的站點配置文件。

2. 在server節點中增加 如下location規則:

 

  1 2 3 4 5 6 7 8 9 10 11 #以index.php開頭的uri location ~ ^/index.php(.*)         {                 #如果文件或者路徑不存在                 if (!-e $request_filename)                 {                         #將pathinfo模式的uri重寫成普通模式                         rewrite  ^/index.php(.*)$  /index.php?s=$1  last;                         break;                 }         }

 

3. 重新載入nginx配置信息

 

  1 service nginx reload

 

Done !

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved