對於ThinkPHP的URL訪問路勁如:http://域名/index.php/Index/BlogTest/read,原先的Nginx的是不支持的pathinfo路勁的,致使你在thinkPHP5上面測試的時候,輸入相應的URL也不會提示模塊名,控制器名或者方法名錯誤,而是出現一個404找不到的錯誤,那是由於Nginx沒法解析這樣的連接,下面講講如何配置:php
首先找到 nginx.conf css
一、只實現pathInfohtml
筆者的位置在 /usr/local/nginx/conf 下nginx
vim /usr/local/nginx/conf/nginx.confthinkphp
location ~ \.php { #去掉$ root H:/PHPServer/WWW; 筆者這裏默認是 html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; #增長這一句 fastcgi_param PATH_INFO $fastcgi_path_info; #增長這一句 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
這樣就實現了nginx 支持pathInfovim
二、實現徹底支持tp5 隱藏index.php 以及支持 pathinfo 栗子:測試
server { listen 8082; server_name localhost; charset utf-8; access_log logs/host.access.log main; root /usr/local/nginx/html/thinkphp/public; index index.html index.htm index.php; location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; 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; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ { expires 30d; access_log off; } location ~ .*\.(js|css)?$ { expires 7d; access_log off; } }