Heim  >  Artikel  >  Backend-Entwicklung  >  使Nginx支持ThinkPHP框架_PHP教程

使Nginx支持ThinkPHP框架_PHP教程

WBOY
WBOYOriginal
2016-07-14 10:07:00826Durchsuche

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

}

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477891.htmlTechArticle最近在将公司的一台的服务器从Apache迁移到Nginx的时候出了点问题,特做个笔记。 问题出在上面的一个网站是基于ThinkPHP框架开发的,用默...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn