ThinkPHP 6.0 在 Nginx 下默认页面能访问,其他路由无法访问报错 404 问题

问题描述

访问首页是可以访问的:
解决 ThinkPHP 6.0 在 Nginx 下默认页面能访问,其他路由无法访问报错 404 问题

定义路由后访问相应页面则报错 404:
解决 ThinkPHP 6.0 在 Nginx 下默认页面能访问,其他路由无法访问报错 404 问题

问题原因

各种搜索和尝试一番后,终于找到了问题的原因所在,在Nginx低版本中,是不支持PATHINFO的。

解决方法

文档也给出了相应的解决方法,通过在 Nginx.conf 中配置转发规则实现:
解决 ThinkPHP 6.0 在 Nginx 下默认页面能访问,其他路由无法访问报错 404 问题

问题解决

文件位置:
根据 Nginx 所在目录找到 vhosts 文件夹

C:\...\Nginx1.15.11\conf\vhosts

解决 ThinkPHP 6.0 在 Nginx 下默认页面能访问,其他路由无法访问报错 404 问题

修改文件:

server {
        listen        80;
        server_name  juzi.test;
        root   "C:/phpstudy_pro/WWW/juziya/public";
        location / {
            index index.php index.html error/index.html;
            ...
            autoindex  off;
            if (!-e $request_filename) {
                   rewrite  ^(.*)$  /index.php?s=/$1  last;
            }
        }
        location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9000;
            ...
            include        fastcgi_params;
        }
}

保存并重启 Nginx,必须要重启 Nginx 才会生效!

再次访问路由,能成功访问啦!
解决 ThinkPHP 6.0 在 Nginx 下默认页面能访问,其他路由无法访问报错 404 问题

参考资料

文档:URL访问 · ThinkPHP6.0完全开发手册 · 看云 (kancloud.cn)
文章:tp6 部署后 404

本作品采用《CC 协议》,转载必须注明作者和本文链接
敢于争先 @ 不正
讨论数量: 3

Nginx不管是低版本还是高版本,都要配置rewrite的吧

1年前 评论
不正 (楼主) 1年前
linzening (作者) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!