a、检查路由是否开启
不能将路由规则放在控制器:url路由匹配是从应用级别就开始的,如果路由规则放到控制器方法里,如果请求都执行到路由器的方法了,那么控制器里的路由规则就没有意义,并且真是的url地址都已经暴露,因此路由注册必须写在应用级别上,如果没有自定义配置目录,路由规则应该写在application目录下的route.php文件里。如果创建则应该在自定义目录下新建route文件
b、引入系统提供的路由类(注册路由规则,应该引入该类)
(将路由规则注册到框架中,使用think命名空间下的Route类的rule方法,因为该文件没有加命名空间所以think前面不用加反斜杠,表示从全局开始)
注册以后不能用pathinfo方法访问,如要用pathinfo方法访问需要关闭路由
c、路由访问模式,配置文件:(默认混合模式:设置了路由就用路由访问,没有就用pathinfo访问)
d、路由注册:
动态方法演示:此处路由参数即为后缀名必须为shtml,变量lesson必须为字符且十个以内长度
(index模块下的index控制器的index.phpdemo方法)
注意:上例中有变量lesson所以为动态路由规则,没有变量即为静态路由规则
配置数组:demo方法文件及返回结果同上,test方法配置简单因为不需要变量和规则
f、路由规则
带参数的路由规则
g、路由地址
路由种类:
模块/控制器/操作:
可访控制器:可访问的url控制器层名字默认为controller是可以改变的(在convention文件中,比如改为con那么模块中的控制器文件夹名称也要改为con)
支持额外参数:
(name是通过路由规则动态变量的方式传递的,而lesson是通过路由地址中的额外参数传入的)
操作方法
跳过模块初始化:在自定义配置文件的模块配置文件中定义了site_domain
在应用模块中访问配置文件定义的site_domain值
路由规则文件的路由地址前加上@符,就会跳过模块的初始化也就是不会执行模块的配置文件,直接执行到方法
类的方法(动态与静态):
在应用目录下创建类文件Test.php
在自定义配置文件的路由规则文件中
闭包函数
例子:
重定向地址
或者站外跳转