nginx支持path_info访问

发布时间:2016-03-04 浏览次数:2909 文章来源:个人博客

在nginx下面,index.php/home/test这样的路径是无法访问的,需要进行修改。

可以找到/usr/local/nginx/vhost/***.conf

然后修改部分内容:如下

location / {

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

         if (!-e $request_filename)

         {

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

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

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

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

         }

    }

        location ~ [^/]\.php(/|$)

        {

            # comment try_files $uri =404; to enable pathinfo

            try_files $uri =404;

            fastcgi_pass  unix:/tmp/php-cgi.sock;

            fastcgi_index index.php;

            include fastcgi.conf;

            #include pathinfo.conf;

    #定义变量 $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;

        }

通过上面的配置,nginx就可以支持path_info的形式访问了。而apache的话开启rewrite重写即可(就是说apache本身支持path_info)。

key-word
Nginx path_info nginx path_info nginx修改url模式