URL和路由总结

实际上,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对应的路由最好和新闻啊,消息啊之类的有关系,这属于开发的好习惯吧,有条理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,649评论 18 139
  • 文章分类 后台文章分类列表页模板导的详细步骤建立数据表blog_category,并添加相应的文章字段使用php ...
    JoyceZhao阅读 1,699评论 0 12
  • Linux实践 Linux安装程序 Linux安装程序的方法: 二进制文件安装 rpm -ivh *.rpm Y...
    厲铆兄阅读 613评论 0 7
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 1,997评论 0 9
  • 01 Jason是公司新招的海归,专门律师事务所里的海外大客户,平时他总是爱穿polo衫,当然也都是地道的牌子货,...
    蝎子小猫咪阅读 223评论 0 9