zoukankan      html  css  js  c++  java
  • Thinkphp5——pathinfo的访问模式、路径访问模式

     tp5访问入口文件的时候是,访问public目录下的index.php,那么她真正访问的url到底是什么?如何去访问其他页面,实际上她默认使用的PATH_INFO模式进行访问。

    PATHINFO模式

    想想在我使用tp3.2的时候,也是利用的path_info去访问,再往前刚接触的php的时候,我们写的php脚本访问的时候就是按照文件位置去访问的对应url,例如http://localhost/test/a/b/c.php,确实这种就是普通的路由访问,直接按照url去找你对应文件夹下的php然后执行。

    那么pathinfo的模式, 其url的路径实际并不存在,apache或者nginx等通过一定的手段将不存在的路径

    保存在$_SERVER['PATH_INFO']环境变量里面,举个例子http://localhost/path_info.php/index/index/index.html?id=1;

    那么在path_info.php里面我就只写了一个例子

    <?php
    echo $_SERVER['PATH_INFO'];
    ?>

    会输出

    /index/index/index.html

    这一段就是pathinfo模式,去访问不存在的路径,会存在一个环境变量$_SERVER['PATH_INFO'],后面的id=1作为$_GET['id']传入页面。

     

    pathinfo的两种模式

    访问applicationindexcontrollerindex.phptest方法,下面这两种模式是相等的

    1、http://localhost/index.php?m=Index&a=test

    2、http://localhost/index.php/Index/test

     

    四种路径访问模式

    config目录下边来做修改 URL_MODEL的值,分别表述如下:

    1、值为0   叫做普通模式。如:http://localhost/index.php?m=模块&a=方法

    2、值为1   叫做pathinfo模式。如:http://localhost/index.php/模块/方法

    3、值为2   叫做rewrite重写(伪静态) 可以自己写相关的rewrite规则,也可以使用系统为我们提供的rewrite规则隐藏掉index.php,生成:http://localhost/模块/方法

    4、值为3   叫做兼容模式。当服务器上面不支持pathinfo模式的时候,但是你又在之前的路径访问格式上面,全部用的是pathinfo格式。那么它会提示你路径格式不正确。那么,你就可以用标号为3的兼容模式来处理。他的路径访问类似于http://localhost/index.php?s=模块/方法 

    TP5默认path_info模式

    好吧,转到正题上,那么tp5的url是怎么弄的?

    实际上tp就是根据PATHINFO,从里面提取到模块名,控制器名,操作方法名,将剩余的部分转换成为$_GET。

     

    URL大小写问题

    最后,再看一下这个让人迷惑的地方,很多时候报错就是你的url访问找不到你的控制器类

    tp5默认url不区分大小写,url里面的模块/控制器/操作名会自动转化大小写,控制器在最后调用的时候会转化为驼峰法处理

    下面我关闭url转化控制器和操作名,来访问

     

     

    顺道看一下日志吧

    位置:(D:wampwwwTp5 untimelog)

    日志在项目开发的时候还是很重要的,看看日志也能帮助理解

    小结
    [1]thinkphp5默认使用pathinfo模式来解析url进行访问

    [2]模块目录小写,控制器名和类名一致采用大驼峰,后缀是.php,操作方法采用小驼峰书写

    [3]我建议关闭“是否自动转换URL中的控制器和操作名”,也就是config.php配置文件里面url_convert设置为false,大小写严格一些,方便以后上线在linux运行

    [4]永远记住,日志很重要


    原文链接:https://blog.csdn.net/Tacks/article/details/85121188

  • 相关阅读:
    leetCode 53. maximum subarray
    leetcode strStr()
    DCNN models
    1*1 的卷积核
    leetcode 14. longest common prefix
    springMVC接受json并打开新页面
    jsp取addFlashAttribute值深入理解即springMVC发redirect传隐藏参数
    hive安装教程本地模式
    poi excel超出65536行数限制自动扩展Invalid row number (65536) outside allow
    java 构造json对象数组
  • 原文地址:https://www.cnblogs.com/bushui/p/11690163.html
Copyright © 2011-2022 走看看