1 discuz 的文檔服務器(archive) 是否要開啟
關于 archive 是否需要開啟要根據我們的論壇要做內容頁的偽靜態或是動態來決定。如果內容頁為偽靜態,那么 archive 就完全沒必要開啟,假如開啟則會造成更多的麻煩與不穩定(主要是重復頁的出現) ; 如果主機不支持偽靜態,那么就要用動態的內容頁,這時就要開啟 archive,啟用后當用戶從搜索引擎點擊時自動轉向動態頁面,可以為用戶提供更好的體驗。
2 在做了偽靜態后,要注意哪些,需要做哪些優化
(1) 建議不要開啟個人資料頁面靜態化,其他的可以做靜態化處理。
(2) 當偽靜態 URL 變化導致內容頁出現重復時如何解決。
"thread - "后面的第一組數字"44105241"是該帖子的 ID 號,ID 號"- "后面的第一個數字"1"代表該主題的第一頁,最后面的數字"1"表示主題在這個版的首頁。但是當該版帖子數量不斷增加,這個帖子就被后推到第二,三……頁上了,對于一個十分活躍的論壇帖子,其數量不斷變化,原先帖子所在的"頁"也就不斷變化,對應的原帖地址在論壇中也不斷變化。Discuz 雖然設置了爬蟲抓取功能,允許搜索引擎來抓取網站內容,并且帖子地址中最后一位返回的數字設置為"1",這樣只是解決了搜索引擎直接到你的網站抓取的網頁地址是唯一的問題,方便搜索引擎進行爬讀,并不能有效解決地址變化導致內容頁出現重復的問題。所以說,如果你的帖子被其他網站引用,則引用的地址鏈接還是會出現 URL 重復的問題。
要想處理這個問題,我們可以直接修改 Discuz 控制偽靜態地址的函數,最后一個數字始終輸出為 1,這樣可以保證 rewrite 之后的地址是單一的,但是缺點是 URL 不能給 discuz 正確傳遞參數,所以如果返回版面的時候只能返回到該版的首頁而不能返回到該帖所在的頁面。
這里我們給出了解決方法:
修改 Rewrite 的格式,最后一個數字統一用 1 代替,以解決 URL 變化和重復的問題。
修改文件 include/global. func. phpfunctionrewrite_thread($ tid,$ page = 0,$ prevpage =0,$ extra = '') {return ' < ahref = " thread - '. $ tid. ' - '. ($ page?
$ page: 1) . '- '. ($ prevpage&&! IS_ROBOT? $ prevpage:
1) . '. html" '. stripslashes($ extra) . '> '; }
改為:
functionrewrite_thread($ tid,$ page = 0,$ prevpage =0,$ extra = '') {return ' < ahref = " thread - '. $ tid. ' - '. ($ page?
$ page: 1) . '- '. '1'. '. html" '. stripslashes($ extra) . '> '; }
有人不理解怎么會出現 URL 變化,例如上面那個網址 1154 代表哪個帖子,后面的數字代表第幾頁第幾個回帖,隨著回復的增加會出現后面數字的增加,但是這都是一個帖子,內容相同,標題、關鍵字相同,這些都不利于seo,為此需要解決。
(3) 做了偽靜態化后,一個帖子都會有兩個地址: 一個 viewthread. php? 另一個 thread - ,這樣也導致了內容頁重復,對 seo 不利,解決方法有如下兩種。
第一種方法在 robots. txt 中添加:Disallow: /redirect. phpDisallow: /viewthread. phpDisallow: /forumdisplay. php還有的更徹底,直接添加 Disallow: /* ? *第二種方法是直接修改 viewthread. php 代碼,告訴搜索引擎有和這個網址對應的靜態網址,那個靜態網址為首選地址。
(4) Discuz 在網址標準化上出現許多問題,對于一樣的內容,出現許多不同的 URL 地址。下面我們來運用 ca-nonical URL TAG 新標準來解決出現的問題。
一是給 viewthread. php 服務端腳本文件添加標準鏈接(canonical URL) .我們發現,動態的鏈接形式是多樣化的,這樣造成了有著不同參數的鏈接指向,但是內容卻是完全一致的。然而,現在的 SE 卻能夠幫助我們解決問題,但 SE 卻無法判定首選顯示 URL 地址的形式,或者當它們都有返回鏈接時,卻不能集中權重。為了解決相關的網頁重復問題,百度、新浪等知名網站都宣布支持新的標簽屬性,能夠將鏈接和權重都推到首選的 URL 地址上。
通過給 viewthread. php 腳本文件加標準鏈接標簽,設置帖子首選為靜態。修改腳本文件,在 $ page = max($ page,1) 函數所在行的上面加一行語句$ extrahead. = '< linkrel = " canonical" href = " thread -'. $ tid. '- 1 - 1. html" / > ';通過給打印頁添加標準化標簽。我們修改 tmplates/default /viewthead_pritable. htm,在 < title > 所在行的下面加入一行: "$ extrahead"語句。
二是給 forumdisplay. php 腳本文件加標準化標簽。方法是找到 includetemplate() 函數所在行,在這行的上面加入一行下列語句:$ extrahead. = '< linkrel = " canoncal" href = " forum - '.$ fd. '- '. $ page. '. html" / > ';三是為文檔服務器轉換頁加入 linkcanonical 標準化標簽。
我們對 archive/index. php 進行修改: 找到 global $ boa-durl 所在行,在其下面插入一行函數 global $ etrahead; 并修改語句 < methttp - equiv = " Content - Type" content = "text /html; charset = { $ charet} " / > ; 按回車鍵后添加 $ ex-trahead.修改 archive/include/thread. php: 為第二個 showheader() 函數所在的上面一行添加 $ extrahead. = '< linkrel = "canonical" href = " thread - '. . '- 1 - 1. html" / > '語句。
四是將文檔服務器內容頁設置為靜態鏈接形式。將語句 archive/include/thread. php 改為"thread - { } - 1 - 1.html" .
如果您是以動態地址形式為首選版本,那么上述對應位置應換成下面的語句:$ extrahead. = ' < linkrel = " canonical" href = " viewt-head. php? tid = '. $ tid. '" / > '
3 對于論壇已刪除帖子,google 抓取工具提示 404錯誤的解決辦法。
(1) 自定義 404 錯誤頁,給用戶良好體驗,實現當訪問到錯誤頁時返回 404 錯誤代碼,并提示該頁面已刪除。
(2) 禁止 discuz 無效頁面的收錄。
#discuz 會產生什么頁面,并出現什么問題?
第一,如果我們刪除了之前的帖子、版塊與當訪問時返回帖子中"不存在"的信息提示頁時。
第二,只有設置了權限而能看見的帖子與版塊,得到了"沒有權限"的提示。
第三,在任何情況下讓瀏覽者看的"提示信息"頁面。
而這些頁面沒有實質性的內容,都應該禁止收錄。因為最應該解決的問題是"副本內容"中的問題,在許多 URL 地址中,返回卻是同樣的內容。如果原帖子被刪除之后,應該返回 404 錯誤信息,如果為了簡化,需要加上 metarobots標簽,禁止 ES 進行收錄。
第四,將提示頁面的信息進行修改,解決內容重復的問題。找到全局函數定義文件"global. func. php",修改這個文件中的 showmessage 函數就行了。找到 define() 函數并在后面加上如下的語句:$ extrhcad. = ' < mtname = " robot" cntent = " noindex,nfolow" / > ';上面語句經過修改之后,我們發現: 無權訪問的 URL地址與已經刪除的帖子與信息等頁面,都會重新出現在帶有"metarobots"禁止的頁面的上面。如果"禁止"收錄后,過若干段時間還能夠從搜索引擎的"索引"中刪除。所以給 SE 的全是有內容的網頁,對于提高權重會有著重要意義。
如果文檔服務器頁面的帖子已經刪除了,那么它的提示信息也要設置為禁止收錄。
我們可以修改 archve/include/thread. php 路徑下的thread. php 文件: 此文件中包含兩個 showheader() 函數,在第一個函數的上面加一行: $ extrahead. = '< metaname = "robots" content = " noindex,nofollow" / > '; 就實現禁止收錄了。
4 為文檔服務器轉換頁加 linkcanonical 標準化標簽
我們通過修改 archve/idex. php: 在 glbal $ boardurl,$_DCAHE,$ chaset,$ nvtitle,$ hederbanner,$ hedernav; 行下加入一行: global $ extahead;在 < meahttp - equiv = "Content - Type"content = "text/html; chaset = { $ chrset} " / > 行下加入一行: $ extrhead這樣就可以實現為文檔服務器轉換頁加 linkcanonical標簽。
5 將 Discuz 的聚合內容(RSS) 中帖子的地址設置為靜態化
在論壇中使用 Discuz 工具,使論壇處于靜態化,而此時 RSS 中的鏈接地址卻沒有處于靜態化,它卻處于動態化之狀態。如果根據 Discuz 的 robots 文件的默認設置,rss.
php 文件卻不能被搜索引擎所索引出現的,同時也不會有重復的 URL 地址出現。而實際情況是: 正常情況之下可以用 RSS 進行調用與聚合,而且 RSS 中的動態地址能夠被搜索引擎所索引。下面我們將把 RSS 中顯示的鏈接地址改成靜態化。
修改文件: rss. php在 rss. php 中找到:" ; ; ; ; < title > " . dhtmlspecialchars ($ thread['subject']) . " < /title > /n" ." ; ; ; ; < link > { $ boardurl } viewthread. php? tid =$ thread[tid]< /link > /n" ." ; ; ; ; < description > < /description > /n" ." ; ; ; ; < category > " . dhtmlspecialchars ($ thread['fo-rum']) . " < /category > /n" ." ; ; ; ; < author > " . dhtmlspecialchars($ thread['author']) . " < /author > /n" ." ; ; ; ; < pubDate > " . gmdate('r',thread['dateline']) . "< /pubDate > /n" ." ; ; < /item > /n" ;將其中的 < link > { $ boardurl} viewthread. php? tid =$ thread[tid]< /link > /n" . 修改為:< link > { $ boardurl} thread - $ thread[tid] - 1 - 1.html < /link > /n" .
6 以前開啟了 archive,現在搜索引擎里收錄了很多archive 的網址,如何關閉如果以前開啟了 archive,現在搜索引擎里收錄了很多archive 的網址,我現在想關閉怎么辦?
對于這個問題,有兩種思路:
(1) 定制 301 重定向,將 archive 的地址重定向到靜態地址。
(2) 在 robots. txt 中 Disallow: /archive,這樣過一段時間搜索引擎中就會刪掉已收錄的 archive 頁,到時候再關閉 archive.
參考文獻:
[1] 三億文庫。 網站建設系統解決方案[DE/OL].