什么是路由?路由有什么用?
为什么改变不同url可以访问到不同的页面?
简单来说,路由就是给指定的页面分配一个url地址。
通过这个url地址,你就能访问到该页面了。
比如你写了一个页面,/static/public/game/index.html
,
你的服务器项目域名http:www.dsxxx.com
你通过一些方式,给该页面配置了一个路由地址/game
那么,你就可以通过http:www.dsxxx.com/game
访问到上面这个index.html文件了
改变不同的url访问到不同的页面,都是通过一些方式做了配置的,具体的方式你可以随着学习的深入逐步了解到
路由的作用就是根据路由协议转发数据的.
一般框架的路由系统都设计成路由器+路由协议. (Router + Route)
路由系统的作用就是把request url根据路由协议转发到控制器上.
url的全称叫统一资源定位符, 所以不同的url代表是访问不同的资源.
所以在定义路由的转发规则时, 一般情况下不同的url会转发到不同的控制器上, 也就获取到不同的资源.
就算是相同的资源, 不同的访问方式, 对这个资源的操作方式也不尽相同. 比如restful架构.
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
PHP 路由
在远古时代(PHP 4 面向过程),人们这么用URL的
一个文件代表一个执行对象,根据名字可以看出来是干嘛的
后来人们觉得麻烦(PHP 4~5过渡阶段),开始这么做,在一个文件里面写
通过分支来判断执行对象(discuz 7 这么做的)
接着Apache支持了Rewrite技术
因为大家觉得网址太长了,以及当年的SEO喜欢抓取静态页面等原因
所以使用了rewrite做了伪静态(比如Discuz至今还在使用)
接着PHP支持了面向对象(OO),且apache支持
PATHINFO
,路由时代到来rewrite的确解决了很多人的麻烦,但是最大的的一个缺点:
一个网址就要设置一条rewrite规则,所以聪明的开发者结合
PHPINFO
技术创造了路由框架通过读取
PHPINFO
,比如CI(Kohana)
的路由是自动代理(无法自定义路由名),看如下代码自定义路由时代
自动代理的路由方式满足不了开发者,Laravel横空出世,可以将路由指向到任意地方
RESTful 时代
伴随着RESTful的标准出台,Laravel继续跟进,提出了无比省事的资源路由
这便是路由到目前的历史(2019)
你以为结束了?
PHP路由简单实现方式
这是PHP的自动代理路由实现方法,伪代码如下(具体实现要比这复杂的多)
Javascript路由
js使用的方式类似于PHP,但是利用的location.hash
伪代码如下(具体实现要比这复杂的多):
结语
一个好的路由,
所以,如今的PHP框架中,路由逐渐替代了
rewrite
,成为了最重要的组成部分