原因分析:現在為了節省一些流量,在查看源代碼的時候,只有管理員可以看到頁面中的 keyword 和 description,而其他普通會員和游客是看不到的,但是蜘蛛是可以看到的,不相信的朋友可以模擬蜘蛛看看結果。
問題所在:目前發現的問題是如果開啟了游客緩存,那么游客觸發緩存后,會造成蜘蛛爬行的時候也讀了緩存,那么就會造成蜘蛛找不到 keyword 與 description 了,所以可以做如下修改,如下修改后,游客也可以看到這兩項了,如果開啟了游客緩存,則需要將游客緩存刪除一下才會生效。
修改文件:
source/class/helper/helper_seo.php
搜索:
if($descriptiontext && (isset($_G['makehtml']) || CURSCRIPT == 'forum' || IS_ROBOT || $_G['adminid'] == 1))
改為:
if($descriptiontext && (isset($_G['makehtml']) || CURSCRIPT == 'forum' || CURSCRIPT == 'portal' || IS_ROBOT || $_G['adminid'] == 1))
接著搜索:
if($keywordstext && (isset($_G['makehtml']) || CURSCRIPT == 'forum' || IS_ROBOT || $_G['adminid'] == 1)) {
修改成:
if($keywordstext && (isset($_G['makehtml']) || CURSCRIPT == 'forum' || CURSCRIPT == 'portal' || IS_ROBOT || $_G['adminid'] == 1)) {
如果想要完全放開SEO設置給游客看,那么可以將
if($descriptiontext && (isset($_G['makehtml']) || CURSCRIPT == 'forum' || IS_ROBOT || $_G['adminid'] == 1)) { $seodescription = helper_seo::strreplace_strip_split($searchs, $replaces, $descriptiontext); } if($keywordstext && (isset($_G['makehtml']) || CURSCRIPT == 'forum' || IS_ROBOT || $_G['adminid'] == 1)) { $seokeywords = helper_seo::strreplace_strip_split($searchs, $replaces, $keywordstext); }
改為
if($descriptiontext) { $seodescription = helper_seo::strreplace_strip_split($searchs, $replaces, $descriptiontext); } if($keywordstext) { $seokeywords = helper_seo::strreplace_strip_split($searchs, $replaces, $keywordstext); }