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的两种模式
访问\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的访问模式、路径访问模式的更多相关文章
- ASM:《X86汇编语言-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载
第八章是一个非常重要的章节,讲述的是实模式下对硬件的访问(这一节主要讲的是硬盘),还有用户程序重定位的问题.现在整理出来刚好能和保护模式下的用户程序定位作一个对比. ★PART1:用户程序的重 ...
- 数据访问模式之Repository模式
数据访问模式之Repository模式 数据访问层无非就是对数据进行增删改查,其中增.删.改等我们可以抽象出来写一个公共的接口或抽象类来定义这些方法,并采用一个基类实现这些方法,这样该基类派生的子 ...
- 百度浏览器极速模式下访问 FastAdmin 的问题
百度浏览器极速模式下访问 FastAdmin 的问题 兼容性问题,因为 https 证书配置时对低版本的浏览器不适配引起. 应该是 百度浏览器的内核太旧,没有更新导致.
- IdentityServer4[3]:使用客户端认证控制API访问(客户端授权模式)
使用客户端认证控制API访问(客户端授权模式) 场景描述 使用IdentityServer保护API的最基本场景. 我们定义一个API和要访问API的客户端.客户端从IdentityServer请求A ...
- SVN服务的模式和多种访问方式 多种访问原理图解与优缺点
SVN企业应用场景 SVN任是当前企业的主流.git正在发展,未来会成为主流.如果大家精力足够,建议同时掌握. 1.4运维人员掌握版本管理 对于版本管理系统,运维人员需要掌握的技术点: 1.安装.部署 ...
- 硬盘和显卡的访问与控制(一)——《x86汇编语言:从实模式到保护模式》读书笔记01
本文是<x86汇编语言:从实模式到保护模式>(电子工业出版社)的读书实验笔记. 这篇文章我们先不分析代码,而是说一下在Bochs环境下如何看到实验结果. 需要的源码文件 第一个文件是加载程 ...
- 【原创】CA证书申请+IIS配置HTTPS+默认访问https路径
一.CA证书申请 (一). 新StartSSL注册帐号 1. StartSSL官网 官方网站:https://www.startssl.com/ 2. 进入到StartSSL后,直接点击注 ...
- CA证书申请+IIS配置HTTPS+默认访问https路径
引用别人博文内容:https://www.cnblogs.com/lichunting/p/9274422.html 一.CA证书申请 (一). 新StartSSL注册帐号 1. StartSS ...
- Android中访问sdcard路径的几种方式
以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统 ...
随机推荐
- Java类、对象、变量、方法
对象:有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等 类:类是一个模板,描述一类对象的行为和状态 对象的行为通过方法来体现,状态就是对象的属性,变量可以是 ...
- 2019 .NET China Conf:路一直都在,社区会更好
这个周末,我从成都飞到了上海参加了首届由社区组织而非官方(比如Microsoft)组织的.NET开发者峰会(.NET Conf).为此,我特意请了两天的假(周五+周六,对,我们是大小周,这周六要上班) ...
- 我是个sb
- python学习之【第十四篇】:Python中的装饰器
1.什么是装饰器? 器即函数 装饰即修饰,意指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 2.遵循的原则 装饰器必须遵循以下两个原则: 不修改被装饰函数的源代码(开放封 ...
- Python基本数据结构之字典
定义: {key1:value1,key2:value2} 1.键与值用冒号“:”分开: 2.项与项用逗号“,”分开: 示例: dic4={ 'name': 'xiaohu', 'age': 20, ...
- LeetCode 5264 在受污染的二叉树中查找元素 Find Elements in a Contaminated Binary Tree
地址 https://leetcode-cn.com/contest/weekly-contest-163/problems/find-elements-in-a-contaminated-binar ...
- nyoj 35-表达式求值(stack, 栈的应用)
35-表达式求值 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:37 submit:53 题目描述: ACM队的mdd想做一个计算器,但是,他要做的 ...
- C语言|博客作业01
2.1你对计算机科学与技术的了解是怎样? 一开始,我并不知道计科和软件的区别,甚至以为这是一种专业的两种叫法.进了大学之后,才一下子懂了,计科就是计科,它和软件虽有相同之处,但是终究是不一样的.计科涉 ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(10)- KBOOT特性(可靠升级)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之可靠升级(Reliable Update)特性. 所谓可靠升级机制,即在更新Applica ...
- 检测当前IE浏览器的版本
检测当前IE浏览器的版本(注意:在非IE浏览器中是看不到效果的) 使用示例如下:低于IE8弹窗提示 <!--[if lte IE 8]><script>alert('您当前浏览 ...