PATH_INFO是一个CGI/1.1的规范,现如今各种PHP框架都使用PATH_INFO作为路由载体,配合Rewrite隐藏php文件路径就能够实现优雅的网站URL规划。然而Nginx默认不支持pathinfo,配置这个功能也便成了Nginx重要的基础性配置。

location ~ [^/]\.php(/|$)
{
    ...
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    set $path_info $fastcgi_path_info;
    fastcgi_param PATH_INFO $path_info;
    try_files $fastcgi_script_name =404;
    ...
}

安全考虑需要检查php.ini下的cgi.fix_pathinfo配置为0(关闭) 原理参考鸟哥文章《Nginx + PHP CGI的一个可能的安全漏洞》

cgi.fix_pathinfo=0