PHP的一些MVC框架,如:ThinkPHP、CodeIgniter、CakePHP等,支持通过PATHINFO和URL Rewrite方式,来提供友好的URL。
在Nginx下默认是不支持PATHINFO的,所以如果不加以配置,访问应用时,会提示403 Forbidden的错误。
修改nginx.conf文件,如下:
location /project/ {
index index.php;
if (!-e $request_filename) {
rewrite ^/project/(.*)$ /project/index.php/$1 last;
break;
}
}
location ~ .+\.php($|/) {
set $script $uri;
set $path_info "/";
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php?IF_REWRITE=1;
include E:/nginx/conf/fastcgi_params;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME D:/xampp/htdocs/$script;
fastcgi_param SCRIPT_NAME $script;
}
主要流程:
把所有请求转到入口文件index.php处理,然后将请求交给FastCGI来处理,同时添加对PATHINFO的支持。
重启Nginx后,就可以使用了。
需要注意一个小细节:在nginx的配置文件里,if后面要留有空格,否则会报unknown directive错误。