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

Posted Sanplit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改Nginx解决ThinkPHP不支持PathInfo模式相关的知识,希望对你有一定的参考价值。

 

最精简的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不支持问题

 

以上是关于修改Nginx解决ThinkPHP不支持PathInfo模式的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp5在Linux下Nginx配置问题解决

nginx下怎么支持THinkPHP

如何让nginx支持ThinkPHP框架

nginx不支持pathinfo 导致thinkphp出错解决办法

nginx+thinkphp5配置

使用swoole框架还用 nginx吗