兩種方法,解決Dedecms輸出RSS鏈接錯誤問題打賞

用DEDE做網站, 為了網站的優化, 通常會打開生成絕對址,也就是后臺設置中的多站點支持功能, 這樣有利于權重的集中。但會產生一個問題:
如果你用的dedecms5.5、5.6, 不修改的話,生成的RSS中的文章鏈接是錯誤的。原因就是程序最開始已經判斷沒有開啟絕對網址(多站點支持), 如果開啟了,會在URL前面加一個根地址$GLOBALS["cfg_basehost"]。
現在在生成RSS的時候對參數[fullurl]又加了一個根地址$GLOBALS["cfg_basehost"]。
生成URL如:?http://www.pswuul.twhttp//www.pswuul.tw/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鏈接錯誤問題》二維碼
  • 微信打賞
  • 支付寶打賞

暫無評論

(必填)

(必填)

(可選)

黑龙江22选5开奖