让nginx支持pathinfo

PHP配置

# vim /opt/php/etc/php.ini
cgi.fix_pathinfo = 1

Thinkphp配置
# vim /data/htdocs/app.test.com/ThinkPHP/Conf/convention.php
    'URL_MODEL'             =>  1

Nginx配置(两种方法)

方法一(新版本):

        if (!-e $request_filename) {
           rewrite  ^/(.*)$  /index.php/$1  last;
           break;
        }


        location ~ \.php {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;

           fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
           fastcgi_param PATH_INFO $fastcgi_path_info;
           fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
           }

方法二(老版本):

#vim /usr/local/nginx/conf/fcgi_pathinfo.conf

#fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;  
#fastcgi_param  SCRIPT_NAME        $fastcgi_script_name; #这两行是需要注释掉的,请注意  
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect  
fastcgi_param  REDIRECT_STATUS    200;
        if (!-e $request_filename) {
           rewrite  ^/(.*)$  /index.php/$1  last;
           break;
        }

        location ~ \.php {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fcgi_pathinfo.conf;
        set $real_script_name $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
        set $real_script_name $1;
        set $path_info $2;
                }
        fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_param PATH_INFO $path_info;
        }


        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
                expires      30d;
        }


        location ~ .*\.(js|css)?$ {
                expires      1h;
        }
        access_log  /data/logs/www/app.test.com_access.log  www;
        error_log  /data/logs/www/app.test.com_error.log;
}

 

posted @ 2016-06-27 16:13  消磨_时间  阅读(100)  评论(0)    收藏  举报