• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

织梦吧 - dedecms,网站模板,建站教程,图片素材免费下载

DedeCMS视频教程
当前位置: 织梦吧 > CMS教程 > discuz教程 >

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

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-02-07点击:
 

问题描述:
已在后台->户->频道栏目下设置某个一级栏目的绑定名,但是访问此域名,仍会跳转到门户域名下的频道地址上。
如后台设置的新闻频道的绑定域名为news.a.com,设置的默认域名为www.a.com,访问news.a.com会302跳转到www.a.com/portal.php?mod=list&catid=x的地址(www.a.com为门户域名,x为新闻频道的ID)。

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

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

  1. $domain = $_G['setting']['domain'];  
  2. //$_G['setting']['domain']为后台->全局->域名设置下设置的域名,为数组。  
  3. $channelrootdomain = !empty($domain['root']) && !empty($domain['root']['channel']) ? $domain['root']['channel'] : '';  
  4. //$channelrootdomain为频道根域名,如果没有设置频道根域名则为空。  
  5. $portaldomain = '';  
  6. if(!empty($domain['app']['portal'])) {  
  7.         $portaldomain = 'http://'.$domain['app']['portal'].$_G['siteroot'];  
  8. } elseif(!empty($domain['app']['default'])) {  
  9.         $portaldomain = 'http://'.$domain['app']['default'].$_G['siteroot'];  
  10. } else {  
  11.         $portaldomain = $_G['siteurl'];  
  12. }  
  13. //$portaldomain为门户域名  
  14. //$domain['app']['default']为应用域名下的门户域名  
  15. //$domain['app']['default']为应用域名下的默认域名  
  16. //$_G['siteurl']为站点url 
  1. if($channelrootdomain && $data[$topid]['domain']){  
  2. //如果存在频道根域名,同时设置该频道栏目绑定了域名  
  3.         $url = 'http://'.$data[$topid]['domain'].'.'.$channelrootdomain.'/';  
  4.         //设置该频道栏目的url为http://频道栏目绑定的域名.频道根域名/  
  5.         if($foldername) {  
  6.         //如果设置了频道的目录名称  
  7.                 if(!empty($value['upid'])) {  
  8.                 //如果存在父级分类  
  9.                         $url .= $foldername;  
  10.                         //设置该频道栏目的url为http://频道栏目绑定的域名.频道根域名/频道的目录名称  
  11.                 }  
  12.         } else {  
  13.                 $url = $portaldomain.'portal.php?mod=list&catid='.$key;  
  14.                 //没有设置频道的目录名称的话,设置该频道栏目的url为门户域名.poral.php?mod=list&catid=x(x为该频道栏目ID)  
  15.                 //从这里可以看出来,如果仅设置了频道域名而没有设置频道的目录名称,则频道栏目的url还是会使用门户域名而非频道栏目绑定的域名  
  16.         }  
  17. } elseif ($foldername) {  
  18. //没有设置频道根域名,但是设置了频道的目录名称  
  19.         $url = $portaldomain.$foldername;  
  20.         //设置该频道栏目的url为门户域名.频道的目录名称  
  21.         if(substr($url, -1, 1) != '/') $url.'/';  
  22. } else {  
  23. //没有设置频道根域名,没有设置频道的目录名称  
  24.         $url = $portaldomain.'portal.php?mod=list&catid='.$key;  
  25.         //设置该频道栏目的url为门户域名.portal.php?mod=list&catid=x(x为该频道栏目ID)  
标签:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 tom@tiptop.cn ,  QQ