修改Nginx解决ThinkPHP不支持PathInfo模式

时间:2022-10-18 09:03:53

 

最精简的Nginx配置

 

server {
        listen       80;
        server_name  test.com;
        charset utf-8;

        location / {
            root   E:/WWW/test;
            index  index.php;
            
            if (!-e $request_filename) {
                #一定要用(.*)匹配整个URI,包含URI第一个字符反斜杠/
                #rewrite ^(.*)$ /index.php?s=$1 last;
                rewrite  ^/(.*)index.php(.*)$  $1/index.php?s=$2  last; 
                break;
            }
        }

        location ~ \.php$ {
            root           E:/WWW/test;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

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

关键就是,高级版的:

rewrite  ^/(.*)index.php(.*)$  $1/index.php?s=$2  last; 

1、精简版的:PathInfo模式http://test.com/index.php/home/wendang/index,会报错无法找到模板index.php,其他正常

2、高级版的:貌似这种,兼容模式http://test.com/home/wendang/index,会出现Not Found,其他正常

 

参考:nginx解决ThinkPHP PATHINFO不支持问题