[解决方案]nginx.conf 隐藏TP框架的入口文件

@Ta 2018-02-04 1555点击
某度提供的都是什么乱七八糟的教程,我配好久都没成,明明就是简单的 6行代码,非得把自己的conf贴出了,还语义不明!

我总结一个简单的

错误的注释 写法://
正确的注释 写法:#

server
{
    listen 80 default_server;
    server_name tlip.cn;
    index index.php index.html;
    root /www/wwwroot/tlip/;
    # 上面的的代码 不是必须,列出来只是为了让你定位下面的重点代码应该放在什么位置。

    # 重点 Start
    location / { #tp隐藏入口文件
       if (!-e $request_filename) {
       rewrite  ^(.*)$  /index.php?s=$1  last;
       break;
      }
    }
    # 重点 End
}


来源于:ThinkPHP3.2URL重写隐藏应用的入口文件index.php

修改前:

tlip.cn/index.php/Home/Index/index      // OK
tlip.cn/Home/Index/index                  // 404

修改后:

tlip.cn/index.php/Home/Index/index     // OK
tlip.cn/Home/Index/index                 // OK


回复列表(5)
  • @Ta / 2018-02-06
    server
    {
        listen 80 default_server;
        server_name tlip.cn;
        index index.php index.html;
        root /www/wwwroot/tlip/;
        # 上面的的代码 不是必须,列出来只是为了让你定位下面的重点代码应该放在什么位置。
     
        # 重点 Start
        location / { #tp隐藏入口文件
           if (!-e $request_filename) {
           rewrite  ^(.*)$  /index.php?s=$1  last;
           break;
          }
        }
        # 重点 End
    }
    
  • @Ta / 2018-02-07
    健健康康
  • @Ta / 2018-02-07
    我来给你科普一下,不是别人什么语义不明。
    这个叫伪静态(重写规则),在你配置之前使用的是pathinfo,而tp3的默认路由规则看起来只是比pathinfo少一个入口文件。这是两个概念
  • @Ta / 2018-02-07
    location / {
        try_files $uri $uri/ /index.php?s=$query_string;
    }
    

    try_files就不用判断去判断文件是否存在了,而且那个break是不必要的
  • @Ta / 2018-02-07
    @齐子小号,这样啊,长知识了
添加新回复
回复需要登录

[聊天-公共聊天室] TabKey9:已发