• 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; 
     }
     ```
  • 相关阅读:
    签字文件的保存逻辑
    POJ-1273 Drainage Ditches
    POJ-2513 Colored Sticks
    HDU-1251 统计难题
    POJ-1300 Door Man
    POJ-3159 Candies
    POJ-3169 Layout
    POJ-2983 Is the Information Reliable?
    POJ-1716 Integer Intervals
    HDU-3666 THE MATRIX PROBLEM
  • 原文地址:https://www.cnblogs.com/cl94/p/13870223.html
Copyright © 2020-2023  润新知