让nginx支持thinkphp的url重写和pathinfo
实现让thinkphp在nginx上正确运行。
只需在配置文件中添加以下信息,就能让nginx正确解析thinkphp的网站。
?
?
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; include fastcgi.conf; fastcgi_index index.php?if_rewrite=1; fastcgi_param path_info $path_info; fastcgi_param script_filename $document_root/$script; fastcgi_param script_name $script; }
这里先把project下的请求都转发到index.php来处理,亦即thinkphp的单一入口文件;然后把对php文件的请求交给fastcgi来处理,并且添加对path_info的支持。
重启nginx以后,http://localhost/project/index/insert, http://localhost/project/index.php/index/delete 这样的url都可以正确访问了。
还有一个地方需要注意的是,nginx配置文件里 if 和后面的括号之间要有一个空格,不然会报unknown directive错误。
?
作者:?潺莪?发表于 2011-08-08 10:48?原文链接
?
