thinkphp5路由的完整匹配

今天学习时候遇到这么一个问题:

当我输入网址访问 http://tm.cn/test/index/1 时候

Route::rule('test/index/:id', 'test/index/index', 'get'); 

上面的路由无法匹配到,而是跳转到了 test对应的路由,这是因为默认不是完整匹配,

Route::get([
    'test' => 'index/Index/test',
    'get_brands' => 'index/Index/list2',
]);

但是如果我去掉:id时候就能正确匹配到第一个路由,经过查阅相关资料
可以通过下面两种方式处理,一个是将第二个路由,修改为如下:
$ 符号表示这个路由需要完整匹配,这样子http://tm.cn/test/index/1就不不会匹配到这个路由了,而是匹配到第一个路由了

Route::get([
    'test$' => 'index/Index/test',
    'get_brands' => 'index/Index/list2',
]);

还可以在应用配置config.php打开完整匹配,所有路径都是需要进行完整匹配

// 路由使用完整匹配
'route_complete_match'   => false,

这样子访问http://tm.cn/test/index/1 或者 http://tm.cn/test/index 都是可以访问到第一个路由,其中:id可传可不传

参考资料:
thinkphp路由的完整匹配

你可能感兴趣的:(php)