thinkphp nginx下出现404问题

1,033 阅读1分钟

nginx下适配thinkphp

thinkphp的url访问: http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值…],

这个需要支持pathinfo,Apache默认支持,而Nginx不支持。

遇到这种情况,不要慌,修改nginx.conf文件添加

 server {
        listen       80;
        server_name  www.aaa.com;

        location / {
            root   /Users/lishuo/Code/php/framework/public;
            index  index.html index.htm index.php;
            #访问路径的文件不存在则重写URL转交给ThinkPHP处理
            if (!-e $request_filename) {
               rewrite  ^/(.*)$  /index.php/$1  last;
               break;
            }
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }


        location ~ \.php/?.*$ {
            root /Users/lishuo/Code/php/framework/public;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #加载Nginx默认"服务器环境变量"配置
            include        fastcgi.conf;
            #设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量
            set $fastcgi_script_name2 $fastcgi_script_name;
            if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
                set $fastcgi_script_name2 $1;
                set $path_info $2;
            }
            fastcgi_param   PATH_INFO $path_info;
            fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name2;
            fastcgi_param   SCRIPT_NAME   $fastcgi_script_name2;
        }
    }