当前位置:   article > 正文

thinkphp路由的完整匹配_thinkphp 链接完整匹配

thinkphp 链接完整匹配

完整匹配

完整匹配

如果希望仅仅匹配

http://tp5.com/hello/thinkphp

而不能访问这种地址

http://tp5.com/hello/thinkphp/city/shanghai

就可以使用完整匹配功能,路由定义规则改为:

Route::get('hello/:name$','index/index/hello');

路由规则最后用$结尾就表示该路由规则是完整匹配的。
(有部分情况下注册的路由规则是自动完整匹配的,比如说资源路由,我们后面会讲到。)

或者使用路由参数

Route::get('hello/:name','index/index/hello',['complete_match'=>true]);

两种方式的作用是相同的(实际上使用$结尾的路由定义最终也会解析成complete_match参数的方式)。

【5.1须知】
可以使用下面的方法定义局部完整匹配

Route::get('hello/:name','index/index/hello')->completeMatch();

如果需要全局的路由规则定义都是完整匹配的话,可以直接修改应用的配置参数:

'route_complete_match'	=>	true

当开启全局完整匹配后,个别路由规则也支持单独关闭完整匹配,使用下面的方式即可:

Route::get('hello/:name','index/index/hello',['complete_match'=>false]);

变量规则

默认情况下,路由变量会匹配所有的字符,但很多时候,我们需要约束变量的规则进行路由匹配:

Route::get('hello/:name/[:city]','index/index/hello',[],[ 'name' => '[A-Za-z0-9]+' , 'city' => '[A-Za-z]+' ]);

分别对name和city变量定义了变量规则(采用正则表达式)。

【5.1须知】
可以使用下面的方法定义变量规则

  1. Route::get('hello/:name/[:city]','index/index/hello')
  2. ->pattern(['name'=> '[A-Za-z0-9]+' , 'city' => '[A-Za-z]+' ]);

或者多次调用

  1. Route::get('hello/:name/[:city]','index/index/hello')
  2. ->pattern('name','[A-Za-z0-9]+')
  3. ->pattern('city','[A-Za-z]+');

下面的URL地址会正确匹配

  1. http://tp5.com/hello/thinkphp2015
  2. http://tp5.com/hello/2015/beijing

下面的URL地址则无效

  1. http://tp5.com/hello/think_php
  2. http://tp5.com/hello/thinkphp/2015
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/351334
推荐阅读
  

闽ICP备14008679号