环境 Nginx+TP6.0
正常的路由重写(伪静态规则) 官方提供的有,宝塔面板上也带;但是今天发现一个问题;如果所访问的URL是以.php文件结尾的但是对应目录下又没有对应的php文件,Nginx会直接返回404;即使TP框架路由里面有对应的路由规则,但是压根儿就走不到这一步;具体原因是 Nginx配置问题;
这个php配置文件在Nginx location块之前,所以你访问的php文件到这一步 就走不下去了;
解决办法如下
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
location ~ .*[^index]\.php$ {
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-74.conf;
#PHP-INFO-END
在 Nginx引入PHP相关配置之前 加入重写规则
location ~ .*[^index]\.php$ {
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
当然后面的路由块里面 正常的路由规则还是要有的哈;其他的框架请自行参考自己的框架文档;
以上观点可能有理解的不对的地方,还望指正,但是确实解决了我遇到的问题;希望对大家有用;