码迷,mamicode.com
首页 > Web开发 > 详细

使Nginx支持ThinkPHP框架

时间:2016-01-25 17:32:19      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:nginx thinkphp


一、nginx不支持thinkphp的原因


ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 ‘URL_MODEL‘ => 2 即可。在Apache下只需要开启mod_rewrite模块就可以正常访问了,但是Nginx中默认是不支持PATHINFO的,所以nginx默认情况下是不支持thinkphp的。不过我们可以通过修改nginx的配置文件来让其支持thinkphp。


二、让nginx支持pathinfo,支持thinkphp


1、打开Nginx的配置文件,注释以下红色字体内容:


http {

  server {

        listen       80;

        server_name  localhost;

        root html;

    location / {

          index  index.php index.html index.htm;

#       location ~ .*\.(php|php5)?$

#                    {

#                            fastcgi_pass 127.0.0.1:9000;

#                            fastcgi_index index.php;

#                            include fastcgi.conf;

#                    }

    location /status {

                stub_status on;

                #access_log   off;

                }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

                {

                        expires      30d;

                }

    location ~ .*\.(js|css)?$

                {

                        expires      12h;

                }   

        #access_log off;

      }

include  vhost/*.conf;

}


2、对注释的内容进行重写,绿色字体部分!


http {

  server {

        listen       80;

        server_name  localhost;

        root html;

    location / {

           index  index.php index.html index.htm;

        #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则

        if (!-e $request_filename)

          {

             #地址作为将参数rewrite到index.php上。

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

             #若是子目录则使用下面这句,将subdir改成目录名称即可。

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

             }

        }

        #proxy the php scripts to php-fpm

    location ~ \.php {

        include fastcgi.conf;

        ##pathinfo支持start

        #定义变量 $path_info ,用于存放pathinfo信息

        set $path_info "";

        #定义变量 $real_script_name,用于存放真实地址

        set $real_script_name $fastcgi_script_name;

        #如果地址与引号内的正则表达式匹配

        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {

            #将文件地址赋值给变量 $real_script_name

            set $real_script_name $1;

            #将文件地址后的参数赋值给变量 $path_info

            set $path_info $2;

              }

        #配置fastcgi的一些参数

        fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;

        fastcgi_param SCRIPT_NAME $real_script_name;

        fastcgi_param PATH_INFO $path_info;

        ###pathinfo支持end

        fastcgi_intercept_errors on;

        fastcgi_pass   127.0.0.1:9000;

           }

   location /status {

                stub_status on;

                #access_log   off;

                }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

                {

                        expires      30d;

                }

    location ~ .*\.(js|css)?$

                {

                        expires      12h;

                }   

        #access_log off;

      }

include  vhost/*.conf;

}


本文出自 “运维·人生” 博客,请务必保留此出处http://qiangsh.blog.51cto.com/3510397/1738226

使Nginx支持ThinkPHP框架

标签:nginx thinkphp

原文地址:http://qiangsh.blog.51cto.com/3510397/1738226

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!