两种方法,解决Dedecms输出RSS链接错误问题打赏

用DEDE做网站, 为了网站的优化, 通常会打开生成绝对址,也就是后台设置中的多站点支持功能, 这样有利于权重的集中。但会产生一个问题:
如果你用的dedecms5.5、5.6, 不修改的话,生成的RSS中的文章链接是错误的。原因就是程序最开始已经判断没有开启绝对网址(多站点支持), 如果开启了,会在URL前面加一个根地址$GLOBALS["cfg_basehost"]。
现在在生成RSS的时候对参数[fullurl]又加了一个根地址$GLOBALS["cfg_basehost"]。
生成URL如: http://www.poorren.comhttp//www.poorren.com/html/xxx.html这样生成的网址肯定是错误的链接了。

找到了问题所在, 就容易解决了, 有两种方法解决这个问题:

第一种方法是修改模板文件,找到模板文件: /templets/plus/rss.htm 打开, 再打到[field:fullurl/]  改成 [field:acrlurl/] 完成, 再生成RSS时就不会产生链接错误了,这是简单方便的方法。

第二种方法是修改程序文件,因为开始绝对网址之后(多站点支持), 会进行两次添加根地址, 导致重复. 所以我们在程序中修改一下也可以修正这个错误。打开系统文件:include/arc.rssview.class.php
找到

$this->TypeFields['typelink'] = $GLOBALS['cfg_basehost'].$this->TypeLink->GetOneTypeUrl( $this->TypeFields);

改为

$this->TypeFields['typelink'] = ($GLOBALS['cfg_multi_site']=="Y")?$this->TypeLink->GetOneTypeUrl( $this>TypeFields) : $GLOBALS['cfg_basehost'].$this->TypeLink->GetOneTypeUrl( $this->TypeFields);

这个是目录的,同样文章的也加一个是否开启了绝对地址的判断
找到

$row["fullurl"] = $GLOBALS["cfg_basehost"].$row["arcurl"];

改为

$row["fullurl"] = ($GLOBALS['cfg_multi_site']=="Y")?$row["arcurl"]: $GLOBALS["cfg_basehost"].$row["arcurl"];

这里推荐第一种方法修改模板文件, 这样不会像第二种方法那样修改了系统的核心类库, 不利于以后程序升级和修改。

另外,如果你不是特意开启多站点支持的,并且你也不需要的,还是建议你修改配置后重新生成。



两种方法,解决Dedecms输出RSS链接错误问题
文章《两种方法,解决Dedecms输出RSS链接错误问题》二维码
  • 微信打赏
  • 支付宝打赏

无觅相关文章插件,快速提升流量