现在的位置: 首页nginx>正文
nginx配置path_info的原因
2012年11月13日 nginx 暂无评论 ⁄ 被围观 3,907 view+

目的:让php能够解析类似这样的url http://www.xxx.com/index.php/abc/def

在默认情况下我们打开这个url时会出现无法找到该页。这就需要在nginx做path_info设置了。

原理:把index.php做为php执行的脚本,把/abc/def做为参数传给php-cgi执行。

实现:nginx版本0.7.31以上支持fastcgi_split_path_info,这个指令可以设置SCRIPT_FILENAME和PATH_INFO的变量,用正则表达式将这两部分分开.

例子:我们在nginx配置文件"local"区块中加入以下代码。

location ~ ^.+\.php {
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_split_path_info ^(.+\.php)(.*)$;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param PATH_INFO $fastcgi_path_info;
  fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
  (...)
}

重启nginx即可

此时,当nginx处理http://www.xxx.com/index.php/abc/def请求时,将会把"index.php"做为php的脚本,/abc/def做为index.php脚本的参数提交给php-cgi执行。

其中$fastcgi_script_name ==> index.php

$fastcgi_path_info ==> /abc/def

给我留言

留言无头像?


×
腾讯微博