nginx如何配置ThinkPHP Rewrite?

       在使用nginx配置完thinkphp后会无法访问,这是由于nginx默认没有开启pathinfo,同时我们需要支持rewrite规则,在配置的时候走了不少弯路,现把配置文件贴出以供大家参考。

       代码如下:

server {
    listen       80;
    server_name  www.xuejiehome.com;
    root /www/web/www.xuejieblog.com;
    index  index.php;
    #过滤文件访问权限
    location ~ ^/(admin|api).php$ {
        deny all;
    }
    location / {
        #ThinkPHP Rewrite
        if (!-e $request_filename){
            rewrite ^/(.*)$ /index.php/$1 last;
        }
    }
    location ~ .php($|/){
        #配置PHP支持PATH_INFO进行URL重写 
        set $script     $uri;
        set $path_info  "";
        if ($uri ~ "^(.+?.php)(/.+)$") {
            set $script     $1;
            set $path_info  $2;
        }
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include fcgi.conf;
        fastcgi_param  SCRIPT_FILENAME    $document_root$script;
        fastcgi_param  SCRIPT_NAME        $script;
        fastcgi_param  PATH_INFO          $path_info;
    }
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires      1d;
    }
    location ~ .*.(js|css)?$ {
        expires      12h;
    }
}

注意:

1.  其中的“include fcgi.conf;”不同的版本是不一样的,比如我的是fastcgi.conf,根据实际情况进行修改。

2.  更改其中的server_name和root即可。



by 雪洁 2014-05-20 07:31:49 2197 views
我来说几句

相关文章