美文网首页
URL和路由总结

URL和路由总结

作者: FKTX | 来源:发表于2017-12-25 22:16 被阅读0次

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


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

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

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

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

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

将前面的#注释取消掉

接着寻找<Directory "/Work/Web/public">这部分,将里面的AllowOverride None这里的None改成All

第三步:重启apache服务


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

相关文章

  • URL和路由总结

    实际上,thinkphp5已经为我们做好了过滤。。。所有的http请求都会从入口文件进来。而入口文件的配置,或者说...

  • Vue-路由

    路由可以分为前端路由和后端路由 后端路由: 概念:根据不同的用户url请求,返回不同的内容 本质:URL请求地址和...

  • URL和路由 - URL

    像这样域名太长,搜索引擎爬虫的时候就不会收录的太好。 这个时候,就需要定义路由了。 定义路由,就是假设按照上面的网...

  • URL和路由-路由

    昨天有个疑惑,但是这张图成功的帮我解惑。 用户访问网站的时候,都是从public中的index.php入口。然后利...

  • ThinkPHP笔记-路由

    路由 利用路由功能,可以让你的URL地址更加简洁和优雅。ThinkPHP支持对模块的URL地址进行路由操作(路由功...

  • vue路由

    前端路由和后端路由,前端渲染和后端渲染 1. 后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地...

  • 组件化

    一、路由模式 路由模式register:先注册一个url,和一个registerBlock.open:通过url,...

  • django框架进阶

    @[toc] Django的URL路由机制 Django的URL路由配置 路由是关联URL及其处理函数关系的过程 ...

  • day05-视图函数

    1)定义视图函数,HttpResponse 2)子路由 url的配置,建立url地址和视图的对应关系 3)主路由配...

  • vue路由

    前端路由和后端路由: 后端路由:对于普通的网站,所有的超链接都是url地址,所有url都对应服务器上对应的资源 前...

网友评论

      本文标题:URL和路由总结

      本文链接:https://www.haomeiwen.com/subject/ilergxtx.html