QueryPHP 支持域名路由,包含纯域名和域名加规则,存在域名加规则则继续匹配这个域名下面的规则,启用域名。
~~~
'url_domain_on' => true
'url_domain_top' => 'queryphp.cn'
~~~
# 泛域名支持
我们允许支持泛域名,也就是域名中支持变量,跟路由变量差不多。
~~~
router::domain ( '{domain}', 'home://index/index' );
~~~
访问
~~~
http://hello.queryphp.cn
~~~
解析后的 GET 值
~~~
Array
(
[domain] => hello
[app] => home
[c] => index
[a] => index
)
~~~
三级泛域名
~~~
router::domain ( '{subdomain}.{domain}', 'home://index/index' );
~~~
访问地址
~~~
http://vip.hello.queryphp.cn
~~~
解析后的 GET 值
~~~
Array
(
[subdomain] => vip
[domain] => hello
[app] => home
[c] => index
[a] => index
)
~~~
# 泛域名全局参数正则
跟路由参数正则一致,域名参数也支持设置全局路由。
~~~
router::regexDomain(['domain' => '[a-z]+']);
~~~
也可以在域名路由附加规则中指定项目:
~~~
router::domain ( '{domain}', 'home://index/index', [
'domain_where' => [
'domain' => '[a-z]+'
]
] );
~~~
# 指定域名或 IP
除了泛域名支持外,QueryPHP 还可以指定域名来绑定模块。
~~~
router::domain ( 'hello', 'home://index/index' );
// 下面这个和上面规则等效
router::domain ( 'hello.queryphp.cn', 'home://index/index' );
~~~
上面两条规则等效,访问地址
~~~
http://:hello.queryphp.cn
~~~
解析后的 GET 值
~~~
Array
(
[app] => home
[c] => index
[a] => index
)
~~~
指定 IP
~~~
router::domain ( '127.0.0.1', 'home://index/index' );
~~~
访问地址
~~~
http://:127.0.0.1
~~~
解析后的 GET 值
~~~
Array
(
[c] => index
[a] => index
[app] => home
)
~~~
# 域名加规则
QueryPHP 可以同时支持域名和规则,可以通过 domain 方法导入,也可以由普通路由导入中 domain 参数添加,即表示域名加规则,例子:
~~~
router::import ( 'hello-{what}', 'home://topic/index', [
'domain' => 'hello'
]);
~~~
访问地址
~~~
http://hello.queryphp.cn
http://queryphp.cn
~~~
系统将无法匹配,进入 pathinfo 默认解析,解析后的 GET 值
~~~
Array
(
[c] => index
[a] => index
[app] => home
)
~~~
访问地址,同时满足和域名和规则,匹配成功
~~~
http://hello.queryphp.cn/hello-world
~~~
系统匹配成功,解析后的 GET 值
~~~
Array
(
[app] => home
[c] => topic
[a] => index
[what] => world
)
~~~
# domain 方法导入域名加规则
我们可以通过域名方法导入域名规则,非常方便。
~~~
router::domain ( 'hello', function () {
router::import('hello-{what}', 'home://topic/index');
} );
~~~
说明:绑定的效果同上。
分组注册域名路由:
~~~
router::group ( [
'prefix' => 'myprefix-'
], function () {
router::domain ( 'hello', function () {
router::import ( 'hello-{what}', 'home://topic/index' );
} );
} );
// 或者
router::domain ( 'hello', function () {
router::group ( [
'prefix' => 'myprefix-'
], function () {
router::import ( 'hello-{what}', 'home://topic/index' );
} );
} );
~~~
访问地址,则系统匹配成功
~~~
http://hello.queryphp.cn/myprefix-hello-world
~~~
解析后的 GET 值
~~~
Array
(
[app] => home
[c] => topic
[a] => index
[what] => world
)
~~~
# 配置文件导入
我们也可以通过配置文件导入域名路由。
~~~
return [
'~domains~' => [
['hello', 'home://index/index'],
['hello.queryphp.cn', 'home://index/index' ]
],
];
~~~
- 关于 QueryPHP
- 获取 QueryPHP
- 环境要求
- 许可协议 Free
- 执行流程 MVC
- 命名规范 $sName
- 目录结构 DIR
- 单一入口 index.php
- 响应客户端请求 URL
- 命名空间与自动载入 Autoload
- 路由
- 路由导入
- 批量导入
- 参数正则
- 分组定义
- 路由绑定
- 路由域名
- 分层控制器
- 默认和初始化APP
- 默认控制器和方法
- url 模式
- url 生成
- url 伪静态
- url 重写
- url 重定向
- 控制器绑定
- 方法器分层
- 控制器 __init
- 控制器方法交互
- 模板引擎语法
- C变量输出 $sName
- C变量支持函数和方法 $sName|trim
- C快捷输出 ~
- C标签简化 Css & Javascript
- C默认值 eq 三元运算符
- C变量运算符 +-
- 变量递增递减 ++--
- C循环数据 list
- N变量赋值 assign
- N循环数据 list
- N循环数据高级版 lists
- C循环数据 while
- N循环数据 while
- C循环数据 for
- N循环数据 for
- C条件判断 if
- N条件判断 if
- 标签嵌套无限层级
- N循环流程 break & continue
- N使用 PHP 代码
- N包含子模板 include
- J模板引擎 intro
- J条件判断 if
- J循环数据 each
- J变量 & 表达式
- J变量支持函数和方法 hello|test
- J默认值 eq 三元运算符
- J框架前端组件 jquery.queryphp.js
- J前端 CSS 规范
- J前端 JS 规范
- 保护标签自身 tagself
- 数据库
- 数据库配置
- 执行原生 sql 语句
- 数据库事务
- 数据库构造器 prefix
- 数据库构造器 table
- 数据库构造器 forceIndex
- 数据库构造器 where
- 数据库构造器 bind
- 数据库构造器 join
- 数据库构造器 union
- 数据库构造器 orderBy
- 数据库构造器 groupBy
- 数据库构造器 having
- 数据库构造器 distinct
- 数据库构造器 aggregate
- 数据库构造器 limit
- 数据库构造器 forUpdate
- 数据库构造器 columns
- 数据库构造器 reset
- 数据库集合查询
- 数据库查询数据 get
- 数据库查询多条数据 getAll
- 数据库查询单条数据 getOne
- 数据库查询聚合查询 aggregate
- 数据库写入数据 insert
- 数据库写入数据 insertAll
- 配置
- 配置格式
- 惯性配置
- 配置文件
- 读取配置
- 设置配置
- 删除配置
- 日志
- 日志配置参数
- 日志路径
- 日志过滤器
- 日志处理器
- 缓存
- 缓存配置参数
- 缓存路径
- 缓存指定时间
- COOKIE
- COOKIE 配置参数
- 开发调试
- 页面 trace