2013-08-17 15:50:12
来 源
IT技术网
Nginx
这篇文章里介绍了配置Nginx服务器支持ThinkPHP框架,希望对于初学Nginx服务器相关的朋友有帮助,更多Nginx安装、配置、报错处理等资源请本站内搜索。。
最近在将公司的一台的服务器从Apache迁移到Nginx的时候出了点问题,特做个笔记。

问题出在上面的一个网站是基于ThinkPHP框架开发的,用默认的方法配置不行。在网上baidu之后发现这个问题很普遍,通用解决方法的配置如下:

server {

 ...

if (!-e $request_filename) {

rewrite  ^/(.*)$  /index.php/$1  last;

break;

}

}

location  ~ .+.php($|/) {

 ....

set $script $uri;

set $path_info  "/";

if ($uri ~ "^(.+.php)(/.*)") {

set $script     $1;

set $path_info  $2;

}

fastcgi_param  PATH_INFO  $path_info;

fastcgi_param  SCRIPT_FILENAME  /path/to/web-root$script;

}

昨天在看书的时候突然发现,原来fastcgi模块自带了一个指令专门用来解决此类问题的,该指令是fastcgi_split_path_info  ,该指令会根据给定的正则表达式来分隔URL,从而提取出脚本名和path info信息,使用这个指令可以避免使用if语句,配置更简单。(server部分的if语句可以用try_files来代替),新的配置如下:

server {

 ...

  try_files  $uri  /index.php$uri;

}

location  ~ .+.php($|/) {

 ....

fastcgi_split_path_info  ^(.+.php)(/.*)$;

fastcgi_param  PATH_INFO $fastcgi_path_info;

fastcgi_param  SCRIPT_FILENAME  /path/to/web-root$fastcgi_script_name;

}

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。