DEDE开启绝对网址后生成RSS链接错误问题

By | 2009/12/02

    用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 ]

6 thoughts on “DEDE开启绝对网址后生成RSS链接错误问题

  1. 艺术签名设计

    按你的方法,修改后,是好了

    可还有一个没有修改

    {dede:field name=’typename’/}
    {dede:field name=’typelink’/}

    这里的{dede:field name=’typelink’/}

  2. dengor Post author

    @艺术签名设计
    一直没有时间去看原码, 今天去看了一下, 发现你是对的.
    {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);

  3. 切梦刀

    回楼上。
    ($GLOBALS[‘cfg_multi_site’]==”Y”)
    中的“Y”应该改成”Y”

Comments are closed.