查看: 51282|回覆: 0
打印 上一篇 下一篇

[SEO知識分享] Discuz!論壇SEO優化指南

[複製鏈接]
字體大小: 正常 放大

53

主題

4

好友

53

積分

居民

專職SEO與LAMP工作

跳轉到指定樓層
1#
發表於 2011-11-22 16:00:01 |只看該作者 |倒序瀏覽
Discuz! 論壇SEO優化指南


原文來源於http://www.gnbase.com/thread-116-1.html,有很多修改。在運用的時候,請根據自己的實際情況套用代碼和指令。


因為現在很多人在做自己的論壇,為了對他們有些幫助,我打算把我優化這個論壇的步驟寫下來。 文章會分為好幾篇來寫,由於涉及的細節很多,我自己也是在邊寫帖子邊給論壇做SEO優化,所以我也不知道會寫到什麽時候結束。

1,選擇論壇程序和版本。

我選擇的論壇程序是Discuz! X1.5,語言版本是 GBK 版。為什麽選這個版本呢?

首先Discuz!x1.5的用戶體驗要比Discuz! 7.2好很多,大家慢慢用這個論壇就會發現這一點。然後Discuz! X1.5的SEO基礎也要比Discuz!7.2好。其實Discuz!7.2是有很多SEO上面的缺陷的,以前那個老論壇我想做一下SEO優化,但是發現要改的還真不少。但是Discuz!x1.5留意到了很多對SEO不友好的地方,如很多容易產生重復的鏈接就用JS調用等等。

顯然Discuz!x1.5 的開發團隊做事非常用心,讓我也對改這個論壇程序有信心很多。

那為什麽要選GBK版本而不選UTF8版本呢? 這是為了讓中文搜索引擎第一時間知道我網站上的內容是中文版本。

爬蟲在GBK編碼的網頁,看到的是:


  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
複製代碼

而在utf-8編碼的網頁看到的是:

  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
複製代碼

Utf-8編碼的網頁,一時半會還真不知道這個網站裏的內容是什麽語言的,而且如果一個網頁中有中文和有英文的時候,搜索引擎還要根據其他一些條件來判斷網站的語言版本。而GBK版本一看就知道是中文的了。

大家如果去查看一下的話,Discuz!官方論壇用的就是GBK版本。

那已經在用utf-8的中文Discuz!論壇怎麽辦呢?  其實還是有方法解決的,可以定義一下xmlns 屬性,把 lang="zh-CN" 加在裏面就可以了。 所以utf-8版本的代碼變為:

  1. <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
複製代碼

Discuz!論壇很多文件都需要這麽改,可以用Dreamweaver整站查找一下。很多其他網站也一樣。這樣改好後,搜索引擎能識別這個網頁為簡體中文版(如果你用繁體中文版,將zh-CN改為zh-TW)。

wordpress程序之所以SEO方面表現很好,就是因為這些細節它都注意到了的。可以看看此文原作者的博客http://www.semyj.com/,wordpress程序默認都會定義這個標簽的。

2,選擇服務器系統

我是很早就不想用windows做服務器操作系統了,只要體會過linux系統好處的人恐怕都是如此。其實,選擇什麽樣的服務器系統也能影響SEO效果的。我最近給很多大中型網站做SEO顧問的時候據發現一個很有趣的規律: 凡是用windows類系統搭建的網站,SEO方面的表現都是不太理想的,而且要優化起來難度也是大一些的。

原因是很多方面的,因為windows類主機不是很穩定,只要程序員不那麽熟悉整個網站,要麽被動的頻繁當機、要麽需要主動停機維護、要麽數據庫壓力大以及運行的代碼先天不足導致服務器速度非常慢。 我觀察過很多網站的爬蟲訪問情況,在同等條件下,windows類主機的抓取量都是差一些的。

當然,這個問題在一個資深的技術人員手裏都不是問題,但就是優秀的技術人員實在太難找到了。(順便廣告一下:我們公司招c++和PHP人員,有興趣的聯系一下我。本廣告長期有效。)

3,優化網站的訪問速度

網頁的加載速度對SEO影響比較大,可以看我博客上的這篇文章來了解原因--(http://www.semyj.com/archives/969)。優化網站的加載速度,可以從以下幾個方面來優化。

1)DNS      
2)服務器網絡環境     
3)服務器硬件和系統      
4)網站程序或CMS      
5)前端代碼

這些因素不用去記的,基本上就是看爬蟲從發起一個請求到返回數據,中間需要經過哪些途徑,然後優化這些相關因素即可。
現在這個論壇只優化了2個地方,就是是DNS優化和網頁打開GZIP壓縮。因為用的是現成的程序,其他地方都不太差,暫時先解決一些基本的問題。

DNS上的優化,就是啟用了雙線主機以及智能DNS。 為什麽我要先做這個呢? 因為我想優化網絡蜘蛛訪問我網站的速度。

如果你做的是中文論壇,做SEO優化肯定要以中文搜尋引擎,如Baidu、Google香港/台灣、雅虎/雅虎奇摩為優先。

因為很多人還是沒有養成先看數據再來做SEO的意識,所以在優化速度的過程,有個問題沒留意到的。這就是沒有看看網絡蜘蛛到底是從什麽地方來訪問的。 對於大部分簡體中文網站來說,網絡蜘蛛可能90%以上都是從北京聯通(網通)訪問過來的;而台灣和香港的繁體中文用戶則比較複雜,因為網絡服務商較多。以聯通為例,這個時候就要特別優化北京聯通(網通)的訪問速度。

所以我用的雙線機房有2個IP,一個電信的IP和一個聯通(網通)的IP。有了個2個IP,還要做智能DNS,這樣當電信的用戶訪問論壇的時候,就解析到電信的IP上,聯通的用戶訪問論壇的時候就解析到聯通(網通)IP上。 這樣,百度爬蟲從北京聯通訪問我論壇的時候,速度就快很多了。 我用的智能DNS服務是DNSPod(http://www.dnspod.com/)提供的,設置的界面如下:

11.gif

我在DNSPod裏面的賬戶是免費賬戶,收費賬戶應該速度更好一點,但是DNSPod對於收費賬戶還要審核,我就一直沒升級了。

設置好了以後,還要檢查一下到底優化的效果如何。可以用監控寶(http://www.jiankongbao.com/)的工具檢測一下。以前北京聯通的響應速度是 1831 ms。經過優化,速度確實會提高很多,如:

12.gif

這裏還列出了是哪方面影響速度的因素大。最好是長期監測這個響應速度,因為這個因素的變化能比較大的影響到SEO效果。可以註冊成為這個網站的付費用戶,就可以每隔幾分鐘去檢測一下網頁的響應時間等等。

為了加快前端的速度,我啟用了論壇自帶的gzip壓縮。Discuz!x1.5後台現在還沒有啟用gzip壓縮功能的地方,需要手動設置:

打開 /config/config_global.php 文件,把



  1. $_config['output']['gzip'] = '0';
複製代碼

更改為:


  1. $_config['output']['gzip'] = '1';
複製代碼

更改完成後即可啟用gzip壓縮。

Discuz!x1.5後台還可以做一些速度上的優化如啟用memcache等等,但是這個相對麻煩點,留著下次來做。

4,靜態化URL

Discuz!x1.5後台自帶了一個靜態化URL的功能,而且默認也寫好了靜態化的規則。但是這裏有一個問題,就是帖子頁面的靜態化規則沒有寫好。

如默認的帖子頁面規則是:


  1. thread-{tid}-{page}-{prevpage}.html
複製代碼

即規則為:

  1. # 將 RewriteEngine 模式打開
  2. RewriteEngine On
  3. # 修改以下語句中的RewriteBase後的地址為你的論壇目錄地址,如www.sskyn.com。如果程序放在根目錄中,為 /,如果是相對論壇根目錄是其他目錄則寫為 /{目錄名},如:在bbs目錄下,則寫為 /bbs
  4. RewriteBase /
  5. # Rewrite 系統規則請勿修改
  6. RewriteCond %{QUERY_STRING} ^(.*)$
  7. RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1
  8. RewriteCond %{QUERY_STRING} ^(.*)$
  9. RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1
  10. RewriteCond %{QUERY_STRING} ^(.*)$
  11. RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
  12. RewriteCond %{QUERY_STRING} ^(.*)$
  13. RewriteRule ^thread-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
  14. RewriteCond %{QUERY_STRING} ^(.*)$
  15. RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1
  16. RewriteCond %{QUERY_STRING} ^(.*)$
  17. RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1
  18. RewriteCond %{QUERY_STRING} ^(.*)$
  19. RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?rewrite=$2&%1
複製代碼

用 UltraEdit 寫好規則後,按F12,在文件另存為的窗口上,有個“格式”選項,選“utf-8 -無BOM “保存。然後把“.htaccess”上傳到論壇根目錄。

然後在進入後台 --> 全局-->優化設置-->搜索引擎優化。 其他保持不變,就把“主題內容頁”規則改為:

  1. thread-{tid}-{page}.html
複製代碼

例如:

13.bmp

然後保存設置再更新一下緩存就可以了。

4,解決重復URL的問題和屏蔽垃圾頁面

Discuz! X1.5還是不可避免的出現重復url的問題。(希望有渠道的朋友能把這些問題反饋給Discuz!相關人員)

這些重復的url既浪費了網絡蜘蛛大量的時間,又使網站的原創性受到損害。所以一定要屏蔽很多重復頁面。

另外還要幹掉一些垃圾頁面,所謂垃圾頁面就是一些沒什麽SEO價值的頁面,也幫助網絡蜘蛛節約時間。

解決這個問題,最好是用robots.txt文件來解決。因為裏面的規則是最強勢的,所有網絡蜘蛛第一次訪問一個域名,第一個動作都是下載這個robots.txt文件並讀取裏面的規則。其他一些nofollow和rel=canonical等標簽適當的時候再用。

雖然Discuz!默認寫了一些robots規則,但是還是不夠理想。

根據從首頁的代碼中發現的問題,需要在robots.txt裏增加的規則有:

  1. Disallow: /forum.php$ (此規則在上面第3節中去掉了)
  2. Disallow: /search-search-adv-yes.html
  3. Disallow: /space-username-*
  4. Disallow: /forum.php?gid=
  5. Disallow: /home.php?mod=space&username=
  6. Disallow: /forum.php?showoldetails=
  7. Disallow: /home-space-do-friend-view-online-type-member.html
  8. Disallow: /space-uid-*
複製代碼

根據在板塊帖子列表頁面發現的問題,需要在robots.txt裏增加的規則有:

  1. Disallow: /search.php$
  2. Disallow: /forum-forumdisplay-fid-*
複製代碼

根據在帖子詳細信息頁面看到的問題,需要在robots.txt裏增加的規則有:

  1. Disallow: /forum-viewthread-tid-*-extra-page%3D.html$
  2. Disallow: /forum.php?mod=viewthread&tid=
  3. Disallow: /forum-viewthread-tid-*-page-*-authorid-*.html
  4. Disallow: /forum-viewthread-tid-*-extra-page%3D-ordertype-*.html
  5. Disallow: /forum-viewthread-action-printable-tid-*.html
  6. Disallow: /home-space-uid-*
複製代碼

至於為什麽要寫這些規則,由於描述起來實在啰嗦,所以大家自行到源代碼裏查看為什麽。

robots.txt的寫法是很靈活的。

可以看一下百度的robots寫法指南:
http://www.baidu.com/search/robots.html
以及Google網站管理員中心的說明:
http://www.google.com/support/webmasters/bin/answer.py?hl=cn&answer=156449

robots.txt寫到這裏並不是結束,還有兩件事情要做。

1,因為robots.txt和nofollow是不同的意思,所以robots.txt並不能代替nofollow。以上這些需要屏蔽的地方還需要用nofollow標註一下。 不過因為要改的源碼太多,暫時先不動。需要用nofollow,還有一個原因是某些搜索引擎並不遵守自己所定下的robots規則。

2,因為只看過論壇中的三類主要頁面,還有很多頁面沒查看過,難免會有漏掉的地方,所以需要以後經常到日誌中查看網絡蜘蛛的軌跡,看看網絡蜘蛛還有哪些抓取問題。

5,修改網頁的頭部信息

Discuz! X1.5的<head>部分有一些信息是我們不想要的,所以需要修改。

打開 \template\default\common\header_common.htm 。(在第2篇中加那個 lang="zh-CN"也是在這個文件)

找到 <title> 部分,去掉  Powered by Discuz!  以及最後一個中劃線“-”。

然後刪除 <meta name="keywords" 這一行。 因為keywords已對SEO沒有任何用處,所以去掉也沒什麽。

如果說要列SEO行業的落伍行為,那寫"keywords"算是其中一項了。

其他的一些選項如 : <meta name="generator"  和  <meta name="author" 等等按理可以去掉,但是很多開源系統存在很多年了,搜索引擎能適當的判斷出來一個網站用的是什麽CMS,所以暫時保留。因為Discuz在SEO方面還是存在其他一些不合理性的,讓搜索引擎知道這個網站是用Discuz做的會有好處。

6,修正系統本身的一些靜態化錯誤。

Discuz! X1.5  升級到 11.25 補丁後,因為系統默認的首頁都是 forum.php,即使訪問index.php也會301重定向到 forum.php 。那麽在上文中用robots.txt文件屏蔽的forum.php需要重新放開了。也可以在模板設置裏把這個forum.php的文件名改成其他文件名,不過暫時先這樣。

還有一個問題,就是“主題內容頁面”(詳細帖子頁)的靜態化規則,很多規則都和版塊列表頁面的URL都不統一。如:帖子的翻頁地址從第二頁起都為: forum-viewthread-tid-220-extra-page%3D-page-2.html 這樣的形式,但是實際上URL應該為 /thread-220-2.html 這樣的形式。 還有就是在面包屑中,論壇版塊的URL為: /forum-forumdisplay-fid-45-page.html  這樣的形式,而實際應該為:/forum-45-1.html 。 如下圖:

14.bmp


所以打開 /source/module/forum/forum_viewthread.php
找到第108行(如果之前沒有改過的話):

  1. if(!empty($_G['gp_extra']))
複製代碼

在上面加一行:

  1. $_G['gp_extra'] = !empty($_G['gp_extra']) ? rawurlencode($_G['gp_extra']) : '';
複製代碼

7,讓搜索引擎收錄圖片

圖片SEO過來的流量也會不少的,但是Discuz! X1.5默認的設置是遊客無法看到圖片的。也就意味著搜索引擎也收錄不了帖子中的圖片。

打開 後台 - 用戶 - 用戶組 - 系統用戶組 - 遊客 -  編輯 - 附件相關,在“允許下載/查看附件”上選“是”。

但是如果光這樣設置了,那遊客也可以下載其他附件了。  所以在 後台 - 全局 - 積分設置 - 積分策略 裏,把下載附件設置需要1個金幣就是。這樣下載其他附件還是需要註冊成為會員的。

在圖片alt中加入適當關鍵字亦有助於SEO。至於效果大不大就要看實際情況了。

論壇的SEO優化還只是開始,後面還會有很多其他的優化。


作者:光年論壇@南天網 - SEO與網站營銷交流
南天SEO - 全面知識,免費分享
文章名稱:Discuz!論壇SEO優化指南,光年論壇版權所有
您需要登錄後才可以發表回應 登錄 | 免費註冊

GMT+8, 2024-4-24 16:22

© 2015 SSKYN

回頂部