Php fastcgi_split_path_info配置PATH_INFO


fastcgi_split_path_info指令

fastcgi_split_path_info指令是Nginx的一个内置指令,用于将URI分割成两部分,并将其存储到两个变量中。这样,我们就可以在后续的处理中使用这些变量来获取和处理PATH_INFO的值。命令格式如下:

fastcgi_split_path_info 正则表达式;

该参数后面需指定正则表达式,且必须要有两个捕获,第一个捕获将会重新赋值给$fastcgi_script_name,第二个捕获将会重新赋值给$fastcgi_path_info。

注意表达式切割的是URI(不包含参数), 对应的nginx 变量是$uri, 而非$request_uri

对于某些使用path_info 做路由的框架,如thinkphp, laravel等, 如使用nginx 默认是没有设置PATH_INFO, 需要可以通过配置fastcgi_split_path_info来解析, 可以使用try_files 或 rewrite 来做处理。

如Thinkphp 配置示例:

location / {
                try_files $uri $uri/ /index.php$uri?$query_string;
			    index index.php index.html;
       }
location ~ \.php {
                fastcgi_pass 127.0.0.1:9001;
                fastcgi_split_path_info ^(.+.php)(.*)$;  #解析pathinfo  
                fastcgi_param PATH_INFO $fastcgi_path_info; #设计解析好的path info 
                fastcgi_param SCRIPT_FILENAME $document_root/index.php; 
		include fastcgi_params;
}
,

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注