Nginx默认不支持pathinfo格式的url,最近学习ThinkPHP的URL_MODEL时遇到了这个问题。Apache服务器下开启rewrite,将AllowOverride设置为All就ok了,但是Nginx却需要进一步配置,网上找了很多教程,大都是转载的比较多,试了好几个都没有成功。后来按照另一个教程进行配置,结果ok了。下面是配置过程。
1.Nginx.conf下配置如下 server { listen 80; server_name test.com; index index.php; root D:/phpStudy/WWW/test; #这里是开启rewrite隐藏index.php location / { if (!-e $request_filename) { # -e表示存在某个文件或目录 rewrite ^(.*)$ /index.php/$1 last; #last相当于apache中的[L],表示不再往下匹配 break; } } #这里是pathinfo的配置 location ~ \.php { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; 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; } }
2.hosts文件里配置
127.0.0.1 test.com
ok,打开浏览器试下,http://test.com/Home/Index/index,欧拉!
原文地址:http://php2013.blog.51cto.com/7147744/1591277