nginx 支持 pathinfo 模式和去掉 index.php

我们在使用ThinkPHP框架的时候,默认的时候,都是喜欢用PATHINFO的URL模式,这种框模式对SEO很友好。我们的Apache默认下都是支持PATHINFO的,但是,在 nginx 下,默认是不支持的,我们要开启nginx的PATHINFO支持。

其实配置很简单,只要增加下面几行加数代码,就可以了,注意,这里是nginx1.6以上,如果版本太低没有做测试。不过如果您的 nginx版本太低还是建议升级一下。现在最高稳定版本是1.81了。

location ~ \.php {
        root           /study/study;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;

        #支持 pathinfo 模式
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param  SCRIPT_FILENAME  /stucdy/study$fastcgi_script_name;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;

        include        fastcgi_params;
}

配置好之后,我们重启一下nginx,重启可以用下面这行命令

kill -HUP 主进程号,如:kill -HUP `cat /usr/local/nginx/log/nginx.pid`

重启后,我们就可以  http://www.yduba.com/index.php/Index/index.html 访问网站了。

这时,我们一般不希望URL里带着index.php,不友好。我们可以再配置一下,把 index.php 也去掉。

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

其实原理很简单,就是当访问文件不存在时,就会重写到  /index.php 文件上,并把 / 之后的当做参数加在 /index.php 之后

配置好之后,再重启一下 nginx,然后,我们就可以  http://www.yduba.com/Index/index.html 访问网站了。

未经允许不得转载:易读小屋  »  nginx 支持 pathinfo 模式和去掉 index.php