如何使Nginx支持ThinkPHP框架

最近在将公司的一台的服务器从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;

}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。