nginx重写路由隐藏入口文件报错引发的思考
隐藏thinkphp6的入口文件实现方式:
在伪静态一栏加入代码
if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; }
##当访问 /admin/login时,会触发上面的URL重写,将规则转换成/index.php/admin/login,之后tp6就可以理解了
但是在linux宝塔环境下,访问/index.php/admin/login会触发URL重写代码,将链接转成/index.php/index.php/admin/login
造成报错
控制器不存在:app\controller\index\Php
##原因其实是在上述环境里,/index.php被当成了一个目录而未被当成文件,造成了url的错误重写
##为什么在在linux宝塔环境下,nginx把URL重写之后,/index.php会才被当成文件呢
勉强解决方法
if (!-e $request_filename) {
rewrite ^/index.php/(.*)$ /index.php/$1 last;
rewrite ^/(.*)$ /index.php/$1 last;
}
```

浙公网安备 33010602011771号