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