1. 程式人生 > >TPshop5最新版 安裝 nginx 開啟PATHINFO 模式資源載入路徑載入失敗問題,適用tp3.2PATHINFO模式REWRITE模式

TPshop5最新版 安裝 nginx 開啟PATHINFO 模式資源載入路徑載入失敗問題,適用tp3.2PATHINFO模式REWRITE模式

server {
        listen 80;
        server_name xxxxx.cn;
        root /alidata/www/xxxx;
        index index.php index.html index.htm;

        location / {
            index  index.htm index.html index.php;  
            if (!-e $request_filename){
                #地址作為將引數rewrite到index.php上。tp框架接收s引數為controller和action,不少框架都利用這種方式來實現偽pathinfo模式(pathinfo為php功能,nginx並不支援)
                rewrite ^/(.*)$ /index.php?s=$1 last;
                break;
            }
        }
        #上面的正則能解決不帶xx.php的,這條正則是為了rewrite url中帶index.php/admin/admin/login這種,思路是一樣的,將index.php後的字串當成引數
        #location ~ /.*\.php/ {
        #        rewrite ^(.*?/?)(.*\.php)(.*)$ /$2?s=$3 last;
        #break;
        #}
        
      location ~ .*\.(php|php5)?$
        {
                #fastcgi_pass  unix:/tmp/php-cgi.sock;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  #開啟pathinfo
                fastcgi_param  PATH_INFO  $fastcgi_path_info;
                fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
                include        fastcgi_params;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
                expires 30d;
        }
        location ~ .*\.(js|css)?$
        {
                expires 1h;
        }
        access_log  /alidata/log/nginx/access/diancan.log;
}

PS:

1、在上文中配置規則中一種是攜帶index.php ,一種是不需要的二者選其一即可,PATHINFO帶index.php,REWRITE則不帶index.php。

2、如果專案為二級資料夾或者是多專案則需要修改紅色的框中對應藍色框部分。如果是一級資料夾則藍色框不需為上邊程式碼。


3、解決NGINX PHP "No input file specified"報錯問題?

 更改php.ini
首先php.ini的配置中把
;cgi.fix_pathinfo=0   改為
cgi.fix_pathinfo=1