在使用Thinkphp的时候,项目迁移到nginx上的时候,有时候会出现处理IndexAction能访问,其他控制器无法访问的问题,那么该如何解决呢?请往下看


解决方案

其实是nginx默认并没有开启phpinfo模式,所以在Apache里能用的Thinkphp,迁移到Nginx之后会出现控制器无法查找到的问题,解决方法是打开nginx.conf 或者对应的虚拟机conf配置文件,做以下调整:

server {
    location / {
        //如果是资源文件,则不走phpinfo模式
        if (!-e $request_filename){
            rewrite ^/(.*)$ /index.php?s=$1 last;
        }
    }   
}

在server花括号里,我们加多上面这段代码,可以看到他是一个正则文件,正则在很多地方都用得到,这个的意思是,匹配 / 后面的所有数据,将其拼接到 index.php后面,通过重写伪静态规则,实现phpinfo模式访问。

如果根目录下有两个项目,比方说前台后台,建议后台建立文件夹,比如 /admin 。而根目录则放前端的文件夹,在写规则的时候,要遵守:下级目录路由规则,排在上级目录路由规则上面,这样里面的一层文件夹的项目,才能解析成功。

改完别忘记重启下 nginx ,这个配置才能生效哦。


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐