请选择 进入手机版 | 继续访问电脑版
开启辅助访问
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

点击进入授权页面

只需一步,快速开始

[Discuz教程] 访问门户频道绑定的域名仍跳转到默认域名下的分析

回复:0 | 查看:1234 | wuzongxian 发表于 2018-1-17 00:01:10 |阅读模式 |复制链接
问题描述:
已在后台->门户->频道栏目下设置某个一级栏目的绑定域名,但是访问此域名,仍会跳转到门户域名下的频道地址上。
如后台设置的新闻频道的绑定域名为news.moke8.com,设置的默认域名为www.moke8.com,访问news.moke8.com会302跳转到www.moke8.com/portal.php?mod=list&catid=x的地址(www.moke8.com为门户域名,x为新闻频道的ID)。

原因:
绑定的域名生效同时还需要设置频道的目录名称,否则仍会跳转到门户域名下的频道地址。

代码分析:
在cache_portalcategory.php文件中的build_cache_portalcategory函数中,

  • $domain = $_G['setting']['domain'];
  • //$_G['setting']['domain']为后台->全局->域名设置下设置的域名,为数组。
  • $channelrootdomain = !empty($domain['root']) && !empty($domain['root']['channel']) ? $domain['root']['channel'] : '';
  • //$channelrootdomain为频道根域名,如果没有设置频道根域名则为空。
  • $portaldomain = '';
  • if(!empty($domain['app']['portal'])) {
  • $portaldomain = 'http://'.$domain['app']['portal'].$_G['siteroot'];
  • } elseif(!empty($domain['app']['default'])) {
  • $portaldomain = 'http://'.$domain['app']['default'].$_G['siteroot'];
  • } else {
  • $portaldomain = $_G['siteurl'];
  • }
  • //$portaldomain为门户域名
  • //$domain['app']['default']为应用域名下的门户域名
  • //$domain['app']['default']为应用域名下的默认域名
  • //$_G['siteurl']为站点url

复制代码



  • if($channelrootdomain && $data[$topid]['domain']){
  • //如果存在频道根域名,同时设置该频道栏目绑定了域名
  • $url = 'http://'.$data[$topid]['domain'].'.'.$channelrootdomain.'/';
  • //设置该频道栏目的url为http://频道栏目绑定的域名.频道根域名/
  • if($foldername) {
  • //如果设置了频道的目录名称
  • if(!empty($value['upid'])) {
  • //如果存在父级分类
  • $url .= $foldername;
  • //设置该频道栏目的url为http://频道栏目绑定的域名.频道根域名/频道的目录名称
  • }
  • } else {
  • $url = $portaldomain.'portal.php?mod=list&catid='.$key;
  • //没有设置频道的目录名称的话,设置该频道栏目的url为门户域名.poral.php?mod=list&catid=x(x为该频道栏目ID)
  • //从这里可以看出来,如果仅设置了频道域名而没有设置频道的目录名称,则频道栏目的url还是会使用门户域名而非频道栏目绑定的域名
  • }
  • } elseif ($foldername) {
  • //没有设置频道根域名,但是设置了频道的目录名称
  • $url = $portaldomain.$foldername;
  • //设置该频道栏目的url为门户域名.频道的目录名称
  • if(substr($url, -1, 1) != '/') $url.= '/';
  • } else {
  • //没有设置频道根域名,没有设置频道的目录名称
  • $url = $portaldomain.'portal.php?mod=list&catid='.$key;
  • //设置该频道栏目的url为门户域名.portal.php?mod=list&catid=x(x为该频道栏目ID)
  • }

复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

快速回复 返回列表 客服中心





企业站定制,我们更专业!

联系我们
快速回复 返回顶部 返回列表