配置nginx,支持php的pathinfo路径模式

nginx模式默认是不支持pathinfo模式的,类似index.php/index形式的url会被提示找不到页面。下面的通过正则找出实际文件路径和pathinfo部分的方法,让nginx支持pathinfo。

 server {
        listen       8080;
        server_name  ewifiportal.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   D:/Users/xc/Zend/workspaces/DefaultWorkspace/EWiFiPortal;
            index  index.html index.htm index.php;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ .php {
            root           D:/Users/xc/Zend/workspaces/DefaultWorkspace/EWiFiPortal;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info ^(.+.php)(.*)$;
            #fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param   PATH_INFO $fastcgi_path_info;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param    PATH_TRANSLATED    $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /.ht {
        #    deny  all;
        #}
    }

要点:
1.~ .php 后面不能有$  以便能匹配所有 *.php/* 形式的url

2. 需要设置path_info

fastcgi_split_path_info ^(.+.php)(.*)$;
fastcgi_param   PATH_INFO $fastcgi_path_info;
原文地址:https://www.cnblogs.com/vania/p/4974337.html