最近搞TP5,配置Nginx服务器。玩惯了Apache,发现nginx确实很不一样。尝试了N种方法都无法配置成功。

因为用windows本地开发调试的,根目录下又有多个目录,一直不知道在怎么弄。最后终于找到解决方法。

location ~ \.php {    #去掉$
     root          H:/PHPServer/WWW;
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_split_path_info ^(.+\.php)(.*)$;     #增加这一句
     fastcgi_param PATH_INFO $fastcgi_path_info;    #增加这一句
     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
     include        fastcgi_params;
}

再去掉index.php:

location /sgy/ {
    if (!-e $request_filename){
    rewrite ^/sgy/public/(.*)$ /sgy/public/index.php?s=$1 last;
    }
}

2016.12.17后续:
发现了一直以来一个错误,导致一直出现的不理解的问题,现在解决了;在不解析到/public/目录的情况下,经常出现文件找不到的情况。之前的配置方法一直是像上面那样:

location / {
    root   D:/wnmp/www;
    index  index.html index.htm index.php;
}
location /sgy/ {
    if (!-e $request_filename){
    rewrite ^/sgy/public/(.*)$ /sgy/public/index.php?s=$1 last;
    }
}

但是这样的话,下面的并没有指定root!改为:

location / {
    root D:/wnmp/www;
    index index.html index.htm index.php;
    if (!-e $request_filename){
    rewrite ^/sgy/public/(.*)$ /sgy/public/index.php?s=$1 last;
    }
}

然后问题就解决了。