URL和路由总结

URL和路由总结_第1张图片

实际上,thinkphp5已经为我们做好了过滤。。。所有的http请求都会从入口文件进来。而入口文件的配置,或者说可以在入口文件做哪些配置,在base.php中都能看到:



URL和路由总结_第2张图片



正常情况下,localhost/index.php这个是入口文件,对应的目录是public/index.php。而这个入口文件通常对应的又是前端的index模块,所以,如果想要访问admin模块,还得先写入口文件index.php,然后才是admin/index/index

若是写成 localhost/admin/index/index则会提示报错

URL和路由总结_第3张图片

实际上,上面这种情况属于配置没配置好的结果。若想访问admin模块直接就localhost/admin/index/index的话,可以做下面这样的配置:

第一步,先找到apache的httpd.conf文件

URL和路由总结_第4张图片

第二步,再在这个httpd.conf文件中找到rewrite_modules

将前面的#注释取消掉

URL和路由总结_第5张图片

接着寻找这部分,将里面的AllowOverride None这里的None改成All

URL和路由总结_第6张图片

第三步:重启apache服务

URL和路由总结_第7张图片



入口文件绑定:默认情况下,在入口文件处我们访问的都是Index模块的index.php控制器,如果我们想让localhost默认访问的不是index模块,而是admin模块,那么只需要在入口文件处像下图这样进行配置:BIND_MODULE就是绑定模块的意思

URL和路由总结_第8张图片

由上面这个配置,只需要在url栏输入 :
 localhost/admin模块的控制器/admin控制器中的方法    
这样的格式,就可以访问admin控制器中的方法了。

同理,也可以直接绑定到某个控制器,比如:
define('BIND_MODULE','admin/index')
这样的写法就可以直接绑定到admin模块的index控制器。因此只需要在url栏输入index控制器中的一个方法即可。比如:localhost/hello

如果,想给第三方开放一个API接口,用来分享网站的数据什么的,但是不想让第三方进入我们的index模块,而是让他进入api.php


URL和路由总结_第9张图片

如果只做上面这幅图中的内容,那么打开浏览器输入localhost/api.php访问的还是index模块,这是因为还没有进行模块绑定设置,况且,也没有创建api模块

于是,先去config.php中开启自动绑定模块(之所以去config.php中,是因为前几节的学习中,已经在入口文件处将conf文件设置成配置文件了,因此里面的配置文件都会对app中的文件起作用)

URL和路由总结_第10张图片

开启了自动绑定模块之后,再去创建相应的模块和控制器,下面这个文件路径就是app/api/controller/Index    这个不是浏览器访问路径,访问路径不需要加controller控制器

URL和路由总结_第11张图片

之后,在浏览器输入localhost/api.php/index/demo就可以访问index控制器中的demo方法。上图没有写出demo方法。

需要注意的是,开启了自动模块绑定,绑定的是模块,因此在浏览器中就不需要输入模块名字了。



为了美化url,或者简化url的访问,需要用到路由。先看一个访问的例子,可以看到注释中访问的url很长,如何简化呢?

URL和路由总结_第12张图片

先去默认配置中查看,默认是开启的路由

URL和路由总结_第13张图片

前几节已经将配置文件的路径设置到了conf中,因此原来的配置文件不起作用了?不是的,而是作用被conf文件中的配置覆盖了。

URL和路由总结_第14张图片

上面这幅图中,一般都会将url_route_must设置成false,因为一旦设置成了true,用户访问的每一个url,开发者都必须提前写好路由规则,否则就会提示访问错误。。。

设置好了之后,再到conf中创建一个route.php路由设置,不过奇怪的是这里将路由的键变成了'news/:id',所以在浏览器器中输入参数的时候,就只能输入news了。值就是这个写法冒号加名字

URL和路由总结_第15张图片

之后,为了能更好的看到效果,在index.,php中利用url函数进行输出,假如下图中的index/index/info改成index/index/index方法,那么输出的还是/index/index/index/id/10.html,若下图不进行修改,那么输出的则是/news/10.html    (原理是因为上面配置了路由规则)

URL和路由总结_第16张图片

最后补充一句,路由设置的时候,起名字也不是随便起的,最好是能和内容有一定的关联性。比如news/:id这样子,那么news对应的路由最好和新闻啊,消息啊之类的有关系,这属于开发的好习惯吧,有条理。

你可能感兴趣的:(URL和路由总结)