https://segmentfault.com/a/1190000002667095



fastcgi_index

作用域:http, server, location

当请求以/结尾的时候,会将请求传递给所设置的index.php文件处理。

fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;

fastcgi_split_path_info

作用域:location

Nginx默认获取不到PATH_INFO的值,得通过fastcgi_split_path_info指定定义的正则表达式来给$fastcgi_path_info赋值。

其正则表达式必须要有两个捕获。

  • 第一个捕获的值会重新赋值给$fastcgi_script_name变量。

  • 第二个捕获到的值会重新赋值给$fastcgi_path_info变量。

例子:

location ~ ^(.+\.php)(.*)$ {    fastcgi_split_path_info       ^(.+\.php)(.*)$;    fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;    fastcgi_param PATH_INFO       $fastcgi_path_info;

}

原始请求是 /show.php/article/0001

通过分割,FastCGI得到的结果是:

  • SCRIPT_FILENAME: /path/to/php/show.php

  • PATH_INFO: /article/0001

Nginx在0.7.31以前是没有fastcgi_split_path_info这个指令的,而0.7.x这个版本一直存活了好多年,后面才高歌猛进,导致网上存在大量旧版本通过正则自己设置PATH_INFO的方法。

<br/>

标签: php技术

评论已关闭

辽公网安备21010602000703号 备案号:冀ICP备2022001219号