🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
在项目的配置目录下,创建route.php 一个空的route配置文件: ~~~ <?php return array( 'route' => array( ) ); ~~~ 所有配置都在 ~~~ 'route' => array( ) ~~~ 中编写。 一个完整的路由配置示例: ~~~ <?php return array( 'route' => array( // 默认不指定文件时使用的文件名。可不设置。 'default_file' => 'index.php', // 是否隐藏默认文件名,不设置时默认为false 'hide_default_file' => true, // 定义所有入口文件的权限,可不设置 'entrance' => array( 'index.php' => array( // 使用允许规则 'priority' => 'allow', // 允许访问Public模块下所有控制器所有动作 'allow' => array('Public/*/*'), // 无效 'deny' => array('Setting/*/*'), ), 'admin.php' => array( // 使用拒绝规则 'priority' => 'deny', // 无效 'allow' => array('Public/*/*'), // 禁止访问Setting模块下所有控制器所有动作,禁止访问Public/Index/index 'deny' => array('Setting/*/*','Public/Index/index'), // 默认缺省的模块/控制器/动作,*号代表所有 'default_mca' => 'Admin/Index/*' ) ), // 路由规则 'rules' => array( // URL => 模块/控制器/动作名 'a.php@/b/[b:word:3]' => 'Home/Index/$1', 'a/[alias:word]' => '>/Home/Index/$1', 'b/[b:word:1:2][c:word:3]' => 'Home/Index/$1$2', 'login' => 'Admin/User/login', 'c/[id:\d+]' => 'Home/Index/test' ) ) ); ~~~ URL格式: ~~~ [文件名@]地址 ~~~ 可以在地址中定义各种变量,还可以用类型长度来限定。 格式: ~~~ [变量名[:类型[:长度最小值[:长度最大值]]]] ~~~ 可选类型: | 名称 | 支持长度 | 描述 | | -- | -- | -- | | int | √ | 整数 | | double | | 小数 | | letter | √ | 大小写字母 | | big_letter | √ | 大写字母 | | small_letter | √ | 小写字母 | | word | √ | 包含大小写英文字母、0-9数字、_- | | 留空 | √ | 所有字符 | | 正则表达式 | √ | 原样代入 | 下面主要讲解的是rules中的路由规则。 ~~~ 'a.php@/b/[b:word:3]' => 'Home/Index/$1' ~~~ 生效的URL: ~~~ http://localhost/a.php/b/abc ~~~ 对应模块控制器动作: ~~~ Home/Index/abc ~~~ 如果在对应动作方法中定义参数$b,则会把abc传入$b参数中。 * * * * * ~~~ 'a/[alias:word]' => '>/Home/Index/$1' ~~~ 生效的URL: ~~~ http://localhost/a/a123 ~~~ 对应模块控制器动作: ~~~ Home/Index/a123 ~~~ 如果在对应动作方法中定义参数$alias,则会把a123传入$alias参数中。 * * * * * ~~~ 'b/[b:word:1:2][c:word:3]' => 'Home/Index/$1$2' ~~~ 生效的URL: ~~~ http://localhost/a/test http://localhost/a/login ~~~ 对应模块控制器动作: ~~~ Home/Index/a123 ~~~ 不生效的URL: ~~~ http://localhost/a/hehehe http://localhost/a/log ~~~ 如果在对应动作方法中定义参数$b或$c,则会把对应值传入参数中。 * * * * * ~~~ 'login' => 'Admin/User/login' ~~~ 生效的URL: ~~~ http://localhost/login ~~~ 对应模块控制器动作: ~~~ Admin/User/login ~~~ 起到了伪静态的作用,当然你也可以定义为 ~~~ 'login.html' => 'Admin/User/login' ~~~ 这时访问 ~~~ http://localhost/login.html ~~~ 同样对应模块控制器动作: ~~~ Admin/User/login ~~~ * * * * * ~~~ 'c/[id:\d+]' => 'Home/Index/test' ~~~ 生效的URL: ~~~ http://localhost/c/123 ~~~ 对应模块控制器动作: ~~~ Home/Index/test ~~~ 如果在对应动作方法中定义参数$id,则会把123传入$id参数中。