现在是移动端的天下,域名的意义其实并不大了,并且启用频道二级域名还容易存在JS跨域的问题,同时微信公众号与小程序也会有域名的限制,所以一直以来就没有考虑在系统中集成频道二级域名。 大家有需要的话,可以参考下面的方法自行配置。 修改文件`\application\config.php` 查找`url_domain_deploy`把他右边的 `false`换成 `true` 再查找 `url_domain_root` 在他右边输入 `abc.com` 即你的域名(注意单引号不能漏掉)这一项其实不设置也问题不大,但有的服务器不设置就不会生效,所以尽量设置一下吧。 如下图所示 ![](https://img.kancloud.cn/83/18/8318875ed01e9fcd4c6965cf1ab9d424_672x566.png) 再查找 `extra_file_list`把右边中括号里边的内容`THINK_PATH . 'helper' . EXT`换成 `APP_PATH . 'helper' . EXT,THINK_PATH . 'helper' . EXT` 如下图所示 ![](https://img.kancloud.cn/c6/1e/c61e841c662235446333a881c625fb3a_1146x213.png) 接着在`\application\`目录下创建一个`helper.php`文件 即`\application\helper.php`里边的内容放下如下代码 ~~~ <?php use think\Url; if (!function_exists('url')) { /** * Url生成 * @param string $url 路由地址 * @param string|array $vars 变量 * @param bool|string $suffix 生成的URL后缀 * @param bool|string $domain 域名 * @return string */ function url($url = '', $vars = '', $suffix = true, $domain = false) { static $array = null; if ($array===null) { $array = @include(RUNTIME_PATH.'url_cfg.php'); if (empty($array)) { $array = []; } } if ($vars && is_string($vars)) { parse_str($vars,$vars); } $par = ''; $_vars = $vars; //避免改变顺序 if ($vars) { ksort($vars); $par = http_build_query($vars); } if ($domain===false) { $url = full_url($url); list($m_name,$m_file,$m_action) = explode('/', $url); $md = modules_config($m_name); if(IN_WAP===true){ if ($md['wap_domain']) { $domain = $md['wap_domain']; } }else{ if ($md['pc_domain']) { $domain = $md['pc_domain']; } } if ($domain===false) { if(IN_WAP===true && config('webdb.wap_domain')){ $domain = config('webdb.wap_domain'); }elseif(config('webdb.pc_domain')){ $domain = config('webdb.pc_domain'); } } } if ($par && $array[$url][$par]) { $_url = Url::build($url.'?'.$par, [], $suffix, $domain); }else{ $_url = Url::build($url, $_vars, $suffix, $domain); } if ( ($m_name=='index'&&!in_array($m_file, ['alonepage','index','login','reg','plugin']))|| ($m_name=='member'&&!in_array($m_file, ['index'])) ) { //避免ajax或框架的跨域 $_url = preg_replace("/^(http|https):\/\/([^\/]+)\//i", "/",$_url); }elseif($url=='index/index/index'){ $_url = str_replace('index/index/index.html','',$_url); } return $_url; } } ~~~ 然后再修改 `\application\route.php` 查找里边类似的代码 ~~~ Route::group(['name'=>'bbs','ext'=>'html','__domain__'=>'thinkphp'], [ 'show-<id>' =>['bbs/content/show',['method'=>'get'],['id' => '\d+']], 'list-<fid>'=>['bbs/content/index',['method'=>'get'],['fid' => '\d+']], 'mid-<mid>'=>['bbs/content/index',['method'=>'get'],['mid' => '\d+']], 'show' => 'bbs/content/show', 'list' => 'bbs/content/index', 'index$' => 'bbs/index/index', ]); ~~~ 把他删除,换成下面的代码 ~~~ Route::domain('bbs',[ 'show-<id>' =>['bbs/content/show',['method'=>'get'],['id' => '\d+']], 'list-<fid>'=>['bbs/content/index',['method'=>'get'],['fid' => '\d+']], 'mid-<mid>'=>['bbs/content/index',['method'=>'get'],['mid' => '\d+']], 'show' => 'bbs/content/show', 'list' => 'bbs/content/index', 'index$' => 'bbs/index/index', '/$' => 'bbs/index/index', ]); ~~~ 第一行的`bbs`即代表二级域名是`bbs`,比如bbs.xxx.com 这个bbs是可以换成其它的,比如`lutan` 下面7行的`bbs`即代表是论坛模块目录名 上面只是针对论坛的二级域名设置,其它频道比如cms qun也同样的方法这样处理,先要删除原有的路由规则,再添加,不然的话,会有冲突不会生效。 如下图所示 ![](https://img.kancloud.cn/88/7f/887ffc798dbff2f04754edd2f950b096_1491x807.png) 再修改文件`\application\admin\controller\Module.php` 查找 `['icon','icon', '图标', ''],`在他下面一行添加如下代码 `['text','pc_domain', '二级域名', '没配置好服务器的话,必须留空,否则请输入二级域名比如“bbs”而不是http://bbs.xxx.com也不是bbs.xxx.com'],` 保存即可,如下图所示 ![](https://img.kancloud.cn/6f/e4/6fe403be11d770d6a8f41c73ef5eb305_1613x526.png) 最后就要升级一下数据库,在后台数据库管理那里导入下面的内容 ~~~ ALTER TABLE `qb_module` ADD `pc_domain` VARCHAR( 100 ) NOT NULL COMMENT '二级域名,比如“wap”而不是http://wap.xxx.com也不是wap.xxx.com'; INSERT INTO `qb_config` (`id`, `type`, `title`, `c_key`, `c_value`, `form_type`, `options`, `ifsys`, `htmlcode`, `c_descrip`, `list`, `sys_id`) VALUES(0, 1, 'PC访问专用域名', 'pc_domain', '', 'text', '', 1, '', '没配置好服务器的话,必须留空,否则请输入域名比如“www”而不是http://www.xxx.com也不是www.xxx.com', 0, 0); ~~~ 确认先把要使用的二级域名指向到当前网站的根目录后。再进后台设置一下www域名网址,及相应的频道二级域名即可,如下图所示 ![](https://img.kancloud.cn/75/e2/75e2ec4c47fdf00d072db8a063e0a338_1451x764.png) ![](https://img.kancloud.cn/27/ec/27ecaed8fccb5313f82bbab29b08d3fa_1436x760.png) 这样就可以使用频道二级目录了! 必须要注意一下 ![](https://img.kancloud.cn/c9/7e/c97e74f5abf6f9753b4f5a1429e01d2f_1813x922.png) 最后的效果如下图所示 ![](https://img.kancloud.cn/81/bc/81bc5bc41841f026ead40ee5527dec7e_930x677.gif)