zoukankan      html  css  js  c++  java
  • 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

    造成报错
    ```
    控制器不存在:appcontrollerindexPhp
    ```
    ##原因其实是在上述环境里,/index.php被当成了一个目录而未被当成文件,造成了url的错误重写
    ##为什么在在linux宝塔环境下,nginx把URL重写之后,/index.php会才被当成文件呢
    

    勉强解决方法

    if (!-e $request_filename) {
       rewrite ^/index.php/(.*)$ /index.php/$1 last;
       rewrite ^/(.*)$ /index.php/$1 last; 
     }
     ```
  • 相关阅读:
    10.31JS日记
    10.24JS日记
    10.23JS日记
    10.22JS日记
    10.19JS日记
    10.18JS日记
    Tomcat—Bad Request
    2016年上半年总结
    线程间操作无效
    压缩字符串的函数
  • 原文地址:https://www.cnblogs.com/cl94/p/13870223.html
Copyright © 2011-2022 走看看