URI路由

浏览数 98446 最后修改时间
YiluPHP只提供两种URI路由规则,第一种是默认的,URI中的结构直接对应controller的目录和文件结构,后面可以再使用斜杆连接参数和值,例如:http://www.yourhost.com/school/student/list 访问的是 /controller/school/student/list.php 文件,带上参数后 http://www.yourhost.com/school/student/list/page/3/page_size/5 访问的也是 /controller/school/student/list.php 文件,但带了两个参数,page=3和page_size=5,这个URI和这样是一样的效果 http://www.yourhost.com/school/student/list?page=3&page_size=5。YiluPHP会根据URI的名称在controller目录中一层一层去查找对应名称的文件,最多查找2层目录,如果找不到则报404错误,如果找到了,URI后面剩余的字符就转换成参数及其值。
第二种规则是重写路由,配置项中有 rewrite_route 字段,它是数组类型,可以设置多条路由规则在数组中,键名是正则表达式,匹配用户访问的URI,键值是实际访问的URI,也就是第一种规则下的路由规则,例如:
/*
     * 在这里设置需要重写的路由
     */
    'rewrite_route' => [
        '/article/detail/{article_id}' => '/welcome/article_id/{article_id}',
    ],
示例中把用户访问的左边键名的路由重写成右边实际的路由,带有一个article_id的参数。其中有一个变量 {article_id} ,代表可以接收不同的文章ID,你可以把 article_id 换成你想取的名称,变量使用花括号{}括越来,同一个路由可以有多个变量。
比如用户访问URI是 /article/detail/123,实际访问的URI是/welcome/article_id/123,访问的文件是 /controller/welcome.php,还有参数article_id=123。


我来说说