在Nginx的0.7.31版本以前对pathinfo支持的很不好,需要各种设置,比如Thinkphp就配置很复杂,老版本配置可以参考惠新宸的blog《Nginx(PHP/fastcgi)的PATH_INFO问题

自从0.7.31以后,大家就有福了,我以Thinkphp为例,配置一下nginx来支持去掉index.php和支持pathinfo

#if(!-e $request_filename) {
#     rewrite ^/(.*)$ /index.php/$1 last;
#}

#推荐用try_files方式进行重定向,不兼容的话在考虑用上面的方式
try_files $uri $uri/ /index.php$request_uri;
location ~ \.php {
     #fastcgi_pass 127.0.0.1:9000;
     fastcgi_pass unix:/tmp/php-cgi.sock;
     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;
}

参考:http://wiki.nginx.org/HttpFastcgiModule