## 路由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>