現在很多項目都有PC端和移動端,PC和移動端都分別在不同模塊,而“www”二級域名是直接訪問PC端(index模塊),如果想要訪問移動端“www.域名.com/mobile”,這樣域名就太長了,下面我教大家一個方法縮短域名。
准備
ThinkPHP支持完整域名、子域名和IP部署的路由和綁定功能,同時還可以起到簡化URL的作用。
要啟用域名部署路由功能,首先需要在config.php開啟:
// 域名部署 'url_domain_deploy' => true,
定義域名部署規則支持兩種方式:動態注冊和配置定義
動態注冊
可以在應用的公共文件或者application\route.php動態注冊域名部署規則,例如:
<?php
use think\Route; Route::domain('m','mobile');
這樣訪問“m.域名.com”就可以直接訪問mobile模板
支持綁定的時候添加默認參數,例如:
// m子域名綁定到mobile模塊 Route::domain('m','mobile?var=thinkphp');
除了綁定到模塊之外,還隱式傳入了一個$_GET['var'] = 'thinkphp'
變量。
支持直接綁定到控制器,例如:
// m子域名綁定到mobile模塊的index控制器 Route::domain('m','mobile/index');
如果你的域名后綴比較特殊,例如是com.cn
或者net.cn
之類的域名,需要在config.php配置:
'url_domain_root'=>'thinkphp.com.cn'
配置定義方式
除了動態注冊之外,還支持直接在application\route.php(路由配置文件)中定義域名部署規則,例如:
<?php use think\Route; Route::domain('mo','mo'); return [ //域名綁定到模塊 '__domain__' => [ 'api' => 'api', 'm' => 'mobile', 'www' => 'index', ], ];
注意: 域名綁定到模塊后,"www.域名.com"他會默認加上index模塊,如果訪問“www.域名.com/index”哪這個index不是模塊而是控制器名稱(因為默認加上index模塊)
綁定路由規則
可以把域名綁定到一系列指定的路由規則,例如:
Route::domain('blog',[ // 動態注冊域名的路由規則 ':id' => ['blog/read',['method'=>'GET'],['id'=>'\d+']], ':name'=>'blog/read', ]);
如果使用配置文件配置的話,可以按照下面的方式:
return [ '__domain__'=>[ 'blog' => [ // 動態注冊域名的路由規則 ':id' => ['blog/read',['method'=>'GET'],['id'=>'\d+']], ':name'=>'blog/read', ], ], // 下面是其它的路由規則定義 ]