欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Nginx系列(七.nginx支持pathinfo)

程序员文章站 2022-04-24 13:35:17
...
一、通过rewrite方式代替php中的PATH_INFO (仅支持Thinkphp)
location / {
    if (!-e$request_filename){
        rewrite ^/(.*)$ /index.php?s=/$1 last;
    }
}

二、nginx配置文件中设置PATH_INFO值

location ~ \.php {
    root /web/www/thinkphp;
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
    include      fastcgi_params;

    set$path_info"";
    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;
}

建议关闭 cgi.fix_pathinfo 选项

三、nginx自带pathinfo支持 (新版本)

location~ [^/]\.php(/|$) {
        root /web/www/thinkphp;
        fastcgi_index index.php;
        fastcgi_pass127.0.0.1:9000;
        include      fastcgi_params;

        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
}

需要开启 cgi.fix_pathinfo 选项

四. 隐藏index.php文件

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

五.nginx 官方指导

http://wiki.nginx.org/PHPFcgiExample

以上就介绍了Nginx系列(七.nginx支持pathinfo),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。