nginx+thinkphp下解決不支持pathinfo模式以及存在的各種404,500問題


nginx環境問題弄了兩天,發現網上很多人的帖子要么復制粘貼,要么就是沒有結貼,還自己寫一句“哈哈,我自己解決了”之類的,這點我就鄙視這些發帖的同胞了,你說你問題問了,問題解決了也不給個解釋。還在搜索的前幾頁,想沒想過需要答案的人的感受呢。滿心歡喜的去看答案,發現沒有結貼。好吧,不多說,進入正題。

我這種方式是不需要將URL_Model改為rewrite/兼容的:

大約第43行,按照下面的對照自己的code進行修改,請注意細節的符號:

 location / {
            root   C:/Zend/workspaces; #//這是你自己項目的根目錄。
            index  index.html index.htm index.php;
            
            if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php/$1 break;    
            break;
            }
            
        }

在php的配置中,將location ~ \.php$ 改為 location ~ \.php,再次強調,注意細節,這里去掉了$符號,我剛開始也是因為這個原因一直沒能解決。

 location ~ \.php {
            root           C:/Zend/workspaces;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  C:/wnmp/php$fastcgi_script_name;
            include        fastcgi_params;
            set $path_info "";
            set $real_script_name $fastcgi_script_name;
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
            set $real_script_name $1;
            set $path_info $2;
            }
            fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
        }

如果仍未解決,在ThinkPHP入口文件index.php中加入配置define(‘_PHP_FILE_’,$_SERVER['SCRIPT_NAME']);

期間大家可能會遇到500,404的問題,但記住一點,細心就行。只要按照我這個改,基本沒什么問題。如果還有問題,歡迎留言咨詢。

解決方法來源參考:http://www.codesth.com/%E4%B8%8D%E7%94%A8rewrite%E5%85%BC%E5%AE%B9%EF%BC%8C%E8%A7%A3%E5%86%B3nginx%E4%B8%8D%E6%94%AF%E6%8C%81thinkphp-pathinfo%E6%A8%A1%E5%BC%8F/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM