配置 nginx 支持 PATH_INFO
作者:Hily 原始链接:http://hily.me/blog/2010/02/nginx-path-info/
版权声明:可以转载,转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
最近方法请移步:
《Nginx >= 0.7.31 已经支持 PATH_INFO》
http://hily.me/blog/2010/04/nginx_path_info/
示例配置:
server {
listen 80;
server_name localhost;access_log /work/www/logs/localhost.access.log main;
location / {
root /work/www;
index index.html index.htm index.php;
rewrite ^/(?!index\.php|admincp\.php|robots\.txt|images|js|stylesheets)(.*)$ /index.php/$1 last;
}location ~ \.php($|/) {
root /work/www;
fastcgi_index index.php;
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
set $script $uri;
set $path_info "";if ($uri ~ "^(.+?\.php)(/.*)$") {
set $script $1;
set $path_info $2;
}include fastcgi_params;
}}
fastcgi_params:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $script;
fastcgi_param PATH_INFO $path_info;fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
fastcgi_pass unix:/tmp/php-fpm.socket;
其实很简单,就是把 index.php/xxx 后面的 /xxx 写到 fastcgi 的 PATH_INFO 参数中。
我这里还做了一层 rewrite,把:
http://localhost/index.php/controller/method/params
重写成了:
http://localhost/controller/method/params
-- EOF --


大木桥药品网 说道:
2010年05月16日 09:50
我按照你说的,配置一下,index.php去不掉
location ~ .*.php {
fastcgi_pass 127.0.0.1:9000;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME /data0/htdocs/damuqiao/yiyao/web/$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;
}
hilyjiang 说道:
2010年05月17日 14:36
请看新日志:
http://hily.me/blog/2010/04/nginx_path_info/