## 路由1分钟极速入门 >[info] ###**提到路由,您首先想到的是什么呢?对,路由器** * * * * * ### 一、 路由和路由器工作原理是什么? 答:[百度]所谓“路由”,是指把数据从一个地方传送到另一个地方的行为和动作,而路由器,正是执行这种行为动作的机器,它的英文名称为Router,是一种连接多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读懂”对方的数据,从而构成一个更大的网络。 >[info] 说了一大堆,总结起来就一句话:路由就是网络数据传输的最佳路径!请看下图: ![](https://box.kancloud.cn/0a3882c4d5a1cf4d6c2238346da9f547_717x269.png) * * * * * ### 二、ThinkPHP5的路由是什么? >[info] ThinkPHP5的路由过程,就是从入口文件开始,找到对应方法的过程。 ![](https://box.kancloud.cn/791e703bc63ac8d8ab70256afd8ac8aa_949x214.png) ### URL: http://tp5.com/index.php/index/user/add/101/peter * * * * * ### 三、传统URL地址是如何进行路由的? >[info] 基本语法:http://域名/入口文件?m=模块名&c=控制器名&a=方法名&键1=值1&键2=值2 * 例如:`http://tp5.com/index.php?m=index&c=user&a=add&id=101` * 图示如下: ![](https://box.kancloud.cn/957e678aaf507d37b4262dfec121c402_803x241.png) * * * * * ### 四、ThinkPHP5的普通路由模式是什么? >[success] ####**ThinkPHP5已经废弃传统URL模式,全部采用PATH_INFO模式。** * 问题一:为什么我们要用PATH_INFO模式的URL地址呢? > 我们将上面的传统URL地址用PATH_INFO改写,一对比就全明白了~~ | 序号 | URL | 说明 | | :---: | --- | --- | | 1 | http://tp5.com/index.php?m=index&c=user&a=add&id=101 | 传统URL模式地址 | | 2 | http://tp5.com/index.php/index/user/add/101 | PATH_INFO模式地址 | >[info] 看出区别了吗?PATH_INFO模式地址,不仅仅缩短了URL,最重要的是看上去与静态网页地址几乎完全一样,这样就达到了欺骗搜索引擎,提高网页收录效果,利于网站优化与推广! * 你可能会说:不对呀,静态网页地址我见过,通常是以html结尾。不要着急,等学到模板技术时就会明白,PATH_INFO地址后缀是可以自定义的,任何有效字符串都可以做后缀,当然也包括html,只要你喜欢,后缀写成:`china`都可以。 * * * * * ### 五、让我们一起完成一个简单的小案例吧~~ 1. 我们先创建一个demo方法,很简单,就是输出字符串:`欢迎学习ThinkPHP5开发技术~~` >[info] 为了简化流程,我们就直接把方法写到Index控制器中啦~~ * 控制器:Index.php 代码非常简单 > Index控制器位置:/application/index/Inddex.php ~~~ <?php namespace app\index\controller; class Index { //创建demo方法,仅输出一个字符串 public function demo() { return '欢迎学习ThinkPHP5开发技术~~'; } } ~~~ * 访问Index控制器中的demo方法,我们有二种方式: > 假设您已经配置好了本地域名tp5.com,不要再用localhost了,你懂的 | 序号 | 访问方式 | URL地址 | | :---: | :---: | --- | | 1 | 传统方式 | http://tp5.com/index.php?m=index&c=index&a=demo | | 2 | PATH_INFO | http://tp5.com/index.php/index/index/demo | ####现在,我们访问刚才创建的demo方法: ~~~ http://tp5.com/index.php/index/index/demo ~~~ * 打开浏览器,在地址栏输入上面的的地址: ![](https://box.kancloud.cn/bda643f9f170049861ab19f40f783f27_697x189.png) * * * * * >[success] ### 我们可以用简化PATH_INFO地址来访问demo方法 * 尽管用PATH_INFO方式可以访问我们的demo方法,但懒惰的程序员怎能忍受这又臭又长的URL地址呢? * 我们现在想用:**<span style="font-size:20px;color:red;">`tp5.com/demo`</span>** 就能直接访问到demo方法,可以做到吗? >[info] ###当然可以,借助路由功能,就可以做到~~ #### 我们只需要做以下二步: 第一步: 开启路由 > 打开应用配置文件:/application/config.php 在代码92行处,将配置项值从false 修改为:true,开启路由功能 ~~~ // 是否开启路由 'url_route_on' => true, ~~~ 第二步:注册路由 > 打开路由配置文件:/application/route.php [如不存在,请手工创建] * /application/route.php 文件内容如下: ~~~ <?php use think\Route; //导入Route类 Route::rule('demo/','index/index/demo/'); //创建路由规则 ~~~ >[info] 可以将`demo/` 理解为` index/index/demo/`的简写或等量替换 ![](https://box.kancloud.cn/32b196871c6eeb92ae5d5d91449d7ba3_703x253.png) ### 路由规则创建完成,下面让我们测试一下吧~~ * * * * * * 在浏览器地址栏输入:`tp5.com/demo/` ![](https://box.kancloud.cn/b7374c734efa7d19bae182e2c8b784d1_686x208.png) > 细心的你或许已发现:原来访问地址:`http://tp5.com/index.php/index/index/demo`中的`index.php`怎么没有了?其实是自动隐藏了,这在后面会讲到。 * * * * * ### 六、总结: * 现在我们可以回答:<span style="color:#f60;font-size:20px;"> 为什么要使用路由?</span> >[info] 答案很简单:就是要让我们的URL访问地址<span style="color:#f60;font-size:20px;"> 更简短、更规范、更安全~~</span>