# 路由访问 [TOC] 路由访问三大模式:普通模式、混合模式、强制模式 普通模式:就是`application/config.php` 配置文件里面的 `url_route_on' => false`,就为普通模式了。普通模式访问全部采用PATH\_INFO格式。 混合模式:Thinkphp采用的就是混合模式,`application/config.php 'url_route_on' => true` 默认就是true。混合模式开启了路由就可以使用路由规则访问,没有开启路由就使用PATH\_INFO访问。 强制模式:强制模式就是开启了 `application/config.php` `route_complete_match' => true`,那么必须全部采用路由模式包括了首页 ## 动态注册 使用`\think\Route`类`rule`方法实现路由的动态注册,基本语法如下: ``` Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)一般用于正则'); ``` 简单实例: ``` // 普通动态注册 Route::rule('dome/:str','home/text/getAll','GET',['ext' => 'html'],['str' => '\w{1,10}']); // 路由表达式,路由的地址,访问的方式,URL的后缀参数,变量的正则匹配 // 数组动态注册 return [ 'dome/:str' => ['home/text/getAll',['method' => 'get'],['ext' => 'html'],['str' => '\w{1,10}']], ]; // 路由表达式,路由的地址,访问的方式,URL的后缀参数,变量的正则匹配 ``` ## 路由规则 路由规则就是用户最终用来访问的URL地址,并非原始URL地址。 基本语法如下: ``` 路由标识符/:变量名/[:变量名] Route::rule('dome/:str/[:str2]','home/text/getAll','GET',['ext' => 'html'],['str' => '\w{1,10}']); // 当我们在方法里,参数设置了默认值,此时我们的变量就可以不用传入直接使用方法默认的值 public function getAll($str,$str2 = '你好') { echo $str,$str2; } ```