用DEDE做网站, 为了网站的优化, 通常会打开生成绝对址, 这样有利于权重的集中. 但会产生一个问题. 如果你用的dedecms5.5, 不修改的话. 生成的RSS中的文章链接是错误的.
原因就是程序最开始已经判断没有开启绝对网址(多站点支持), 如果开启了,会在URL前面加一个根地址$GLOBALS["cfg_basehost"]. 现在在生成RSS的时候对参数[fullurl]又加了一个根地址$GLOBALS["cfg_basehost"]. 生成URL:
http://www.abc.comhttp//www.abc.com/html/xxxx.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"];
这里推荐第一种方法修改模板文件, 这样不会像第二种方法那样修改了系统的核心类库, 不利于以后程序升级和修改.
原创文章 转载请注明出处: 登高望远 [ http://www.dengor.com/archives/387.html ]
按你的方法,修改后,是好了
可还有一个没有修改
{dede:field name=’typename’/}
{dede:field name=’typelink’/}
这里的{dede:field name=’typelink’/}
没回复吗
@艺术签名设计
一直没有时间去看原码, 今天去看了一下, 发现你是对的.
{dede:field name=’typelink’/}也有同样的问题. 要修改.
用第一种方法因为没有直接的标签可以用,一定要修改arc.rssview.class.php
$this->TypeFields[‘typelink’] = ($GLOBALS[‘cfg_multi_site’]==”Y”)?$this->TypeLink->GetOneTypeUrl($this->TypeFields) : $GLOBALS[‘cfg_basehost’].$this->TypeLink->GetOneTypeUrl($this->TypeFields);
回楼上。
($GLOBALS[‘cfg_multi_site’]==”Y”)
中的“Y”应该改成”Y”
全角引号改为半角
@切梦刀
应该没有错吧,本来就是半角的