這兩天幫朋友改動thinkphp項目php
剛開始配置項目,發現thinkphp老是走默認的模塊默認的文件默認的方法,無論url怎麼修改都不行,都是訪問默認的,一開始我覺得是代碼寫錯了,跟了無數個斷點後發現不是代碼的問題,是thinkphp的url訪問問題 http://localhost:9999/index.php?c=Read&a=index 這樣的URL是能正常訪問我本身的控制器和操做的,那問題就在於個人thinkphp不支持PATHINFO方式了!nginx
再看3.2的開發手冊,原來是低版本的nginx不支持thinkphp
解決直接貼代碼:url
#去掉$是爲了避免匹配行末,便可以匹配.php/,以實現pathinfo unix
location ~ .*\.php { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; 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; }