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的两种模式

访问\application\index\controller\index.php的test方法,下面这两种模式是相等的

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:\wamp\www\Tp5\runtime\log\)

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

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

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

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

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

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

Thinkphp5——pathinfo的访问模式、路径访问模式的更多相关文章

  1. ASM:《X86汇编语言-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载

        第八章是一个非常重要的章节,讲述的是实模式下对硬件的访问(这一节主要讲的是硬盘),还有用户程序重定位的问题.现在整理出来刚好能和保护模式下的用户程序定位作一个对比. ★PART1:用户程序的重 ...

  2. 数据访问模式之Repository模式

    数据访问模式之Repository模式   数据访问层无非就是对数据进行增删改查,其中增.删.改等我们可以抽象出来写一个公共的接口或抽象类来定义这些方法,并采用一个基类实现这些方法,这样该基类派生的子 ...

  3. 百度浏览器极速模式下访问 FastAdmin 的问题

    百度浏览器极速模式下访问 FastAdmin 的问题 兼容性问题,因为 https 证书配置时对低版本的浏览器不适配引起. 应该是 百度浏览器的内核太旧,没有更新导致.

  4. IdentityServer4[3]:使用客户端认证控制API访问(客户端授权模式)

    使用客户端认证控制API访问(客户端授权模式) 场景描述 使用IdentityServer保护API的最基本场景. 我们定义一个API和要访问API的客户端.客户端从IdentityServer请求A ...

  5. SVN服务的模式和多种访问方式 多种访问原理图解与优缺点

    SVN企业应用场景 SVN任是当前企业的主流.git正在发展,未来会成为主流.如果大家精力足够,建议同时掌握. 1.4运维人员掌握版本管理 对于版本管理系统,运维人员需要掌握的技术点: 1.安装.部署 ...

  6. 硬盘和显卡的访问与控制(一)——《x86汇编语言:从实模式到保护模式》读书笔记01

    本文是<x86汇编语言:从实模式到保护模式>(电子工业出版社)的读书实验笔记. 这篇文章我们先不分析代码,而是说一下在Bochs环境下如何看到实验结果. 需要的源码文件 第一个文件是加载程 ...

  7. 【原创】CA证书申请+IIS配置HTTPS+默认访问https路径

    一.CA证书申请 (一). 新StartSSL注册帐号 1.    StartSSL官网 官方网站:https://www.startssl.com/ 2.    进入到StartSSL后,直接点击注 ...

  8. CA证书申请+IIS配置HTTPS+默认访问https路径

    引用别人博文内容:https://www.cnblogs.com/lichunting/p/9274422.html 一.CA证书申请 (一). 新StartSSL注册帐号 1.    StartSS ...

  9. Android中访问sdcard路径的几种方式

    以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统 ...

随机推荐

  1. 题解 【洛谷】AT654

    题解 AT654 [役人[错题已隐藏]] 此题题面没搬过来, 会日语的dalao可以自行去ATCoder查看. 给出此题的JavaAC代码: public class Main { public st ...

  2. [wcp部署]Linux(Ubuntu)安装部署WCP

    1.安装JAVA运行环境 配置环境变量及安装jdk mkdir /usr/local/java tar -zxvf jdk-8u31-linux-x64.gz #解压jdk包 mv jdk1.8.0_ ...

  3. [考试反思]0818NOIP模拟测试25:清心

    两机房分开考试.拿到了令人orz的A卷. 15本校+3外校=18人参加 排名第7,没前途.大不了去第二机房... skyh也很强了.tdcp拿来一个诡异的. 86,85,79.然后是我垃圾的.在后面差 ...

  4. [07/18NOIP模拟测试5]超级树

    鬼能想到的dp定义:dp[i][j]表示在一棵i级超级树中,有j条路径同时存在且这j条路径没有公共点时,可能的情况数 刚开始我也没看懂,所以举个例子 如一个2级的超级树,父节点为1,左右儿子为2,3 ...

  5. netty源码解析(4.0)-28 ByteBuf内存池:PooledByteBufAllocator-把一切组装起来

    PooledByteBufAllocator负责初始化PoolArena(PA)和PoolThreadCache(PTC).它提供了一系列的接口,用来创建使用堆内存或直接内存的PooledByteBu ...

  6. 1.基础篇之vue入门

    为了建立高效团队,很多公司会采用全栈工程师,虽然利弊兼有,对于成本优先的创业团队,肯定是首选,特别是对.net生态圈,大部分都是小公司,就更加重要了.这里记录的是对vue的学习点滴,希望对你有所助力. ...

  7. csp-s 66

    我向来只在考砸的时候写博客.这次题很水,但是我极没有状态,我T1没看题目前面的话: 不知道这个条件的我蒙蔽的答题.推各种柿子,想这个矩阵的特殊构造,就是同行的构造,然后我T1想了1个多小时,然后死了! ...

  8. Wycieczki 线性代数

    B. Wycieczki 题目描述 给定一张n个点m条边的带权有向图,每条边的边权只可能是1,2,3中的一种.将所有可能的路径按路径长度排序,请输出第k小的路径的长度,注意路径不一定是简单路径,即可以 ...

  9. HTTPS加密流程理解

    HTTPS加密流程 由于HTTP的内容在网络上实际是明文传输,并且也没有身份验证之类的安全措施,所以容易遭到挟持与攻击 HTTPS是通过SSL(安全套接层)和TLS(安全传输协议)的组合使用,加密TC ...

  10. 快速搭建Jenkins集群

    关于Jenkins集群 在Jenkins上同时执行多个任务时,单机性能可能达到瓶颈,使用Jenkins集群可以有效的解决此问题,让多台机器同时处理这些任务可以将压力分散,对单机版Jenkins的单点故 ...