午夜91福利视频,午夜成人在线观看,午夜在线视频免费观看,午夜福利短视频,精品午夜成人免费视频APP

域名路由

ThinkPHP支持完整域(yu)名(ming)、子域(yu)名(ming)和IP部署的路由和綁(bang)定功能,同時還可以起到(dao)簡化URL的作(zuo)用。

要啟用域名(ming)部署路由功(gong)能,首先需要開(kai)啟:

'url_domain_deploy' =>  true

定義域名部署規則支持兩種(zhong)方(fang)式:動(dong)態注(zhu)冊和配置(zhi)定義。

動態注冊

可以在應用(yong)的公共文件或(huo)者配(pei)置文件中動態注冊域(yu)名部署規則,例如:

// blog子域名綁定(ding)到blog模塊
Route::domain('blog','blog');
// 完整域(yu)名(ming)綁定(ding)到admin模塊
Route::domain('admin.thinkphp.cn','admin');
// IP綁定到(dao)admin模塊
Route::domain('114.23.4.5','admin');

blog子域名綁定后,URL訪問(wen)規則變成(cheng):

// 原來(lai)的(de)URL訪問
http://www.thinkphp.cn/blog/article/read/id/5
// 綁定到blog子(zi)域名訪(fang)問
http://blog.thinkphp.cn/article/read/id/5

支持綁(bang)定的時候添加默(mo)認參數,例如:

// blog子域名(ming)綁定到blog模塊
Route::domain('blog','blog?var=thinkphp');

除了綁定到模塊之外,還隱式傳入了一個$_GET['var'] = 'thinkphp' 變量。

支(zhi)持直接綁(bang)定(ding)到控制器,例如(ru):

// blog子域名綁定到index模(mo)塊(kuai)的blog控制(zhi)器(qi)
Route::domain('blog','index/blog');

URL訪問地址(zhi)變(bian)化為:

// 原來的URL訪問
http://www.thinkphp.cn/index/blog/read/id/5
// 綁定到blog子域名訪問
http://blog.thinkphp.cn/read/id/5

如果你的域名后綴比較特殊,例如是com.cn或者net.cn 之類的(de)域名(ming),需要配置:

'url_domain_root'=>'thinkphp.com.cn'

泛域名部署

可以支持泛域(yu)名部署規則,例(li)如(ru):

// 綁定泛二級域名域名到book模塊
Route::domain('*','book?name=*');

下面的URL訪問都會直接訪問book模塊

http://hello.thinkphp.cn
http://quickstart.thinkphp.cn

并且可以(yi)直(zhi)接通過(guo)$_GET['name']變量(liang) 獲取當前(qian)的泛域名。

支持(chi)三級泛域名部署,例如:

// 綁定泛三級域名到user模(mo)塊
Route::domain('*.user','user?name=*');

如(ru)果我們訪(fang)問如(ru)下URL地址:

http://hello.user.thinkphp.cn

的同時,除了會訪問user模塊之外,還會默認傳入 $_GET['name'] = 'hello'

在(zai)配置傳入(ru)參數的時候,如果(guo)需(xu)要使(shi)用當前的泛域(yu)名作為(wei)參數,可(ke)以直接設置為(wei)“*”即可(ke)。

目前(qian)只支持二級域(yu)(yu)名和(he)三級域(yu)(yu)名的(de)泛域(yu)(yu)名部署。

配置定義方式

除了動態注冊之外(wai),還支持(chi)直接在路(lu)由(you)配置文件(jian)中定(ding)義域名部(bu)署規則,例如:

return [
    '__domain__'=>[
        'blog'      => 'blog',
        // 泛(fan)域名規則建議在最后定義(yi)
        '*.user'    =>  'user',
        '*'         => 'book',
    ],
    // 下(xia)面(mian)是路(lu)由規則(ze)定義
]

域名綁定地址

前面(mian)我(wo)們(men)看到的(de)域名部署規則:

// blog子域(yu)名綁定到blog模塊
Route::domain('blog','blog');

其(qi)(qi)實(shi)是把域名綁定到模塊的(de)方式,其(qi)(qi)實(shi)還有其(qi)(qi)他的(de)綁定方式。

綁定到命名空間

// blog子域名綁(bang)定命名空間
Route::domain('blog','\app\blog\controller');

綁定到類

// blog子域名綁(bang)定到類
Route::domain('blog','@\app\blog\controller\Article');

綁定到閉包函數

 如(ru)果需(xu)要,你也可(ke)以(yi)直接把域(yu)名綁定(ding)到一個閉包函數,例如(ru):

// blog子域名(ming)綁定(ding)閉包函數
Route::domain('blog',function(){
    echo 'hello';
    return ['bind'=>'module','module'=>'blog'];
});

域名綁定(ding)到閉(bi)包函數其(qi)(qi)實(shi)是(shi)一種劫持,可以(yi)在閉(bi)包函數里面動態注(zhu)冊其(qi)(qi)它的(de)綁定(ding)機制或者注(zhu)冊新(xin)的(de)路由,例(li)如(ru):

Route::domain('www', function(){
    // 動(dong)態注冊域名的路由規(gui)則(ze)
    Route::rule('new/:id', 'index/news/read');
    Route::rule(':user', 'index/user/info');
});

如果你不(bu)希望繼續,可以直接在閉(bi)包函數里面中止執行。

// blog子域名綁定到閉包函數
Route::domain('blog',function(){
    exit('hello');
});

綁定路由規則

可以把域名綁(bang)定到一系(xi)列(lie)指定的(de)路由規則,例如:

Route::domain('blog',[
    // 動態注(zhu)冊域名(ming)的路由規則
    ':id' => ['blog/read',['method'=>'GET'],['id'=>'\d+']],
    ':name'=>'blog/read',
]);

如果使用配(pei)置(zhi)文件配(pei)置(zhi)的話,可以按照下(xia)面的方式:

return [
    '__domain__'=>[
        'blog'      => [
            // 動態(tai)注冊域名的路由規則
            ':id' => ['blog/read',['method'=>'GET'],['id'=>'\d+']],
            ':name'=>'blog/read',
        ],
    ],
    // 下面是其(qi)它(ta)的(de)路由(you)規則定義
]

更詳細的(de)綁定(ding)功(gong)能請參考(kao)路(lu)由綁定(ding)一章內容。

文檔最后更新時間:2018-04-25 19:36:06

文檔
目錄

深色
模式(shi)

切換
寬度