pathinfo是什么:
php
path_info不是nginx的功能,它是php的功能。php有两个pathinfo,一个是环境变量$_SERVER['PATH_INFO'] ,另外一个是函数path_info();html
path_info()的功能是能够将输入的url作判断,并返回对url的解析,但nginx并非做用于它。linux
想要对他们两个有更深刻了解能够去这里看看:nginx
http://www.2cto.com/os/201212/176543.html
vim
nginx能够可设置的是$_SERVER['PATH_INFO']的值。服务器
$_SERVER['PATH_INFO']的做用是返回url的一部分,并用与重写。函数
nginx的配置:阿里云
进入阿里云的控制台,输入命令 : cd usr/local/nginx/conf回车(这是我阿里云的linux的nginx配置文件的路径,不知作别人家的会不会不一样,不一样也不要紧,反正目标是nginx.conf文件),进入的conf文件夹,继续输入命令 vim nginx.conf回车url
打开了nginx.conf配置文件,按 i 键,找到http下的server下开始配置:unix
location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; break; } } location ~ \.php { fastcgi_pass 127.0.0.1:9000; //这里不用担忧你的服务器的ip是否和这个不同,不用怀疑, //这样写就好了 fastcgi_index index.php; include fcgi.conf; set $script $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { //上行的if和“(”间要有空格,这是lunix的语法,否则会报错 //报位置变量 set $script $1; //注意这里是1234的1不是字母l set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$script; fastcgi_param SCRIPT_NAME $script; fastcgi_param PATH_INFO $path_info; }
到这里就完成配置,接下来就重启一下nginx,我不晓得别的重启方法,个人重启方法是重启amh我使用了amh面板的,另外说一句amh的重启命令。先是cd回根目录,找etc目录,cd进去,而后输入:init.d/amh-start回车。
还有另一种配置方法:
location ~ \.php { #去掉$ root H:/PHPServer/WWW; 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; }
接下来的步骤和上面同样。
这两种方法我都实践过,都是能够支持ThinkPHP的,可是第二种有点缺陷,我原先放在阿里云的用原生PHP的写的Web就访问不了,而后我换了第二种配置,完美支持。
题外:
Apache是默认支持path_info, 而nginx不支持,对于刚接触的人可能会由于以为配置nginx的pathinfo会很麻烦而止步,装回Apache。我想说请不要这么作,由于比起Apache,nginx更加稳定更增强大,并且咱们由于麻烦就止步,这可不是进步的节奏。
这是一篇分析Apache和nginx的技术blog:http://www.cnblogs.com/huangye-dream/p/3550328.html