什么是PATHINFO:就是http://localhost/index.php/Home/Index/index/a/1/b/2?c=3中的红色部分,

注意c=3并不是pathinfo的一部分,它是一个query参数。

pathinfo值得是URL的路径实际上不存在的时候,apache或者Nginx等通过一定的手段将不存在的路径,都是实际

不存在路径保存到环境变量$_SERVER['PATH_INFO']中。也可以将它转化为$_GET['s']参数,TP也可以识别。

也就是说当你访问TP项目的时候,你实际上访问的只是入口文件index.php,不管你后面有多长的路径,都是实际不存在的,

转换成PATHINFO或$_GET['s']了而已。

那么THINKPHP就是根据PATHINFO,从中提取出 分组名,模块名 ,方法名 , 以及将剩余的部分转换成为$_GET

变量,比如TP从PATHINFO字符串中提取'Home'字段串,将其保持到

$_GET['g'] , $_GET['m']='Index' ;$_GET['a']='index' ;$_GET['b']=2.可以dump('$_GET')看看。

关于URL详细的解析流程,请看 ThinkPHP/Lib/Core/Dispatcher.class.php 核心类。

URL路由:

URL路由--Url Router,指的是,在TP进行常规url解析之前,先检测路由,如果发现有路由规则匹配当前的PATHINFO,那么URL解析则交给路由处理。

路由规则是由多条 rule=>router 规则组成的数组。(规则 =>路由器)

****************************************************************************************************************************************

路由处理过程大概如下:1.遍历路由规则rule,与当前PATHINFO字符串进行匹配,如果合法,则从PATHINFO中取出所需要的字符串。2.路由中每条规则对应一个router,router中指定对应的模块以及方法,模块和方法可以用第1步中匹配到的字符串进行动态替代。3.将剩余的参数都解析并写入到$_GET中。

******************************************************************************************************************************************

设置TP-四种url访问的方式

'URL_MODEL' => 1,

URL访问模式,可选参数0、1、2、3,代表以下四种模式:

0 (普通模式);

1 (PATHINFO 模式);  /*默认*/

2 (REWRITE 模式);

3 (兼容模式)

0:http://localhost/index.php?m=模块&c=控制器&a=操作方法     [get模式]
1:http://localhost/index.php/模块[模块文件夹]/控制器/操作方法    [pathinfo模式]  /*默认*/
2:http://localhost/模块[模块文件夹]/控制器/操作方法     [rewite重写模式]
3:http://localhost/index.php?s=/模块[模块文件夹]/控制器/操作方法  [兼容模式]

*********************************************************************************************************************************************

url的4种访问方式    (这是重点!!)

1.PATHINFO 模式 --重点 在后面使用非常多,如果想传多个参数可以使用键1/值1/键2/值2方法

代码如下:
http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2

2.普通模式也称为重写模式

代码如下:
http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2

3.REWRITE重写模式,去掉入口文件便于SEO优化

代码如下:
http://域名/项目名/模块名/方法名/键1/值1/键2/值2

4.兼容模式

代码如下:
http://域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值2

如何修改PATHINFO地址中的/改成-在Home/Conf/config.php中

代码如下:
'URL_PATHINFO_DEPR'=>'-',//修改RUL的分隔符,把地址栏的参数部分/换成:http://域名/项目名/入口文件/模块名-方法名-键1-值1-键2-值2

在index.php中开启调用模式,为了在后产模式中不让文件缓存影响开发

代码如下:
define('APP_DEBUG',ture);//如果设置为ture不缓存文件,false则缓存文件

REWRITE模式开启方法

在httpd.conf中查找rewrite_module modules/mod_rewrite.sl 把#去掉重启服务,在入口文件下新建.htaccess.php,重写文件是去掉index.php的意思:

代码如下:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

***********************************************************************************************************************************************

路由处理过程大概如下:1.遍历路由规则rule,与当前PATHINFO字符串进行匹配,如果合法,则从PATHINFO中取出所需要的字符串。2.路由中每条规则对应一个router,router中指定对应的模块以及方法,模块和方法可以用第1步中匹配到的字符串进行动态替代。3.将剩余的参数都解析并写入到$_GET中。

************************************************************************************************************************************************

TP中的四种url访问方式相关推荐

  1. thinkphp四种url访问方式详解

    url的4种访问方式   1.PATHINFO 模式 --重点 在后面使用非常多,如果想传多个参数可以使用键1/值1/键2/值2方法 代码如下: http://域名/项目名/入口文件/模块名/方法名/ ...

  2. java按钮权限控制_详解Spring Security 中的四种权限控制方式

    Spring Security 中对于权限控制默认已经提供了很多了,但是,一个优秀的框架必须具备良好的扩展性,恰好,Spring Security 的扩展性就非常棒,我们既可以使用 Spring Se ...

  3. java中的json_JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  4. windows10系统-10-VirtualBox中的四种网络连接方式

    参考快速理解VirtualBox的四种网络连接方式 电脑连接virtualbox虚拟机的方法 VirtualBox NAT 端口映射实现宿主机网络共享 1 VirtualBox四种网络连接 1.1 宿 ...

  5. Java 中Map四种取值方式

    map的主要作用是什么? 可以通过创建一个map的实现类 来存放 数据 值 和值的描述 也可以通过描述去取得数据 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 ...

  6. Java中的四种XML解析方式(一)

    1. SAX解析 解析方式是事件驱动机制 ! SAX解析器, 逐行读取XML文件解析 , 每当解析到一个标签的开始/结束/内容/属性时,触发事件. 我们可以编写程序在这些事件发生时, 进行相应的处理. ...

  7. php 数组存入mysql_PHP将数组存入数据库中的四种方式

    1.implode()和explode()方式 2.print_r()和自定义函数方式 3.serialize()和unserialize()方式 4.json_encode()和json_decod ...

  8. PHP将数组存入数据库中的四种方式

    最近突然遇到了一个问题,如何用PHP将数组存入到数据库中,经过自己的多方查找和研究,总结了以下四种方法: 1.implode()和explode()方式 2.print_r()和自定义函数方式 3.s ...

  9. 爆破专栏丨Spring Security系列教程之Spring Security的四种权限控制方式

    原创:一一哥 前言: 在前面的章节中,一一哥 已经给大家介绍了Spring Security的很多功能,在这些众多功能中,我们知道其核心功能其实就是认证+授权. 在前面我们分别基于内存模型.基于默认的 ...

最新文章

  1. MFC应用程序中添加控制台窗口
  2. java选择循环_java选择和循环结构
  3. Qt Creator将UI项目转换为应用程序
  4. 337. House Robber III 打家劫舍 III
  5. 32位网卡驱动 2008_DPDK之网卡收包流程
  6. DropDownList实现无限级分类
  7. 数据结构之判断一棵树是不是完满二叉树
  8. [工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地
  9. python第七章动手试一试_《Python从入门到实践》第八章动手试一试
  10. 精致的App登录页设计欣赏给你灵感
  11. SAP License:你是怎么理解ERP的?
  12. python 字典处理_python之高效处理字典、序列的一些语法
  13. 戴森工程师揭秘Dyson 360 Eye吸尘机器人的故事:先要做到“智能”
  14. Virtual TreeView使用示例
  15. c#获取本地ip地址网关子网掩码_C#设置本地网络如DNS、网关、子网掩码、IP等等...
  16. MAC环境配置SDK
  17. python实现Longest Common Subsequence最长公共子序列算法
  18. (附源码)APP+springboot订餐APP 毕业设计 190711
  19. Source Insight的应用技巧、宏功能
  20. 华为修改优先级命令_华为交换机配置命令---转

热门文章

  1. python机器学习之基于内容的推荐算法中推荐麻辣香锅菜品实战(附源码)
  2. mongodb根据_id查询数据
  3. 手把手教你使用Python网络爬虫获取菜谱信息
  4. css圆点图片呼吸动画效果,css动画实现呼吸圆
  5. good study 网站(ebook下载)
  6. 第一封信 / 友子,你还在等我么
  7. tlwar1200l设置教程_TL-WAR1200L V1.0升级软件20170609
  8. Linux常用命令详细大全(面试常考)
  9. 袁帅:用科技技术助力效益转化 剖析当前会议互动中的移动互联网科技
  10. 如何通过远程控制进行多人联机