因為現在很多人在做自己的論壇,為了對他們有些幫助,我打算把我優化這個論壇的步驟寫下來。文章會分為好幾篇來寫,由於涉及的細節很多,我自己也是在邊寫帖子邊給論壇做 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 整站查找一下。很多其他網站也一樣。這樣改好後,搜索引擎能識別這個網頁為簡體中文版。

wordpress 程序之所以 SEO 方面表現很好,就是因為這些細節它都注意到了的。 可以看看我的博客 http://blog.weixiaoduo.com/,WordPress 程序默認都會定義這個標籤的。

2,選擇服務器系統

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

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

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

3,優化網站的訪問速度

網頁的加載速度對 SEO 影響比較大優化網站的加載速度,可以從以下幾個方面來優化。

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

這些因素不用去記的,基本上就是看爬蟲從發起一個請求到返回數據,中間需要經過哪些途徑,然後優化這些相關因素即可。

現在這個論壇只優化了 2 個地方,就是是 DNS 優化和網頁打開 GZIP 壓縮。因為用的是現成的程序,其他地方都不太差,暫時先解決一些基本的問題。

DNS 上的優化,就是啓用了雙線主機以及智能 DNS 。 為什麼我要先做這個呢? 因為我想優化百度爬蟲訪問我網站的速度。

因為這是中文論壇,做 SEO 優化肯定要以百度優先。

因為很多人還是沒有養成先看數據再來做 SEO 的意識,所以在優化速度的過程,有個問題沒注意到的。這就是沒有看看爬蟲到底是從什麼地方來訪問的。

對於大部分中文網站來説,爬蟲可能 90% 以上都是從北京聯通 (網通) 訪問過來的。這個時候就要特別優化北京聯通 (網通) 的訪問速度。

所以我用的雙線機房有 2 個 IP,一個電信的 IP 和一個聯通 (網通) 的 IP 。有了個 2 個 IP,還要做智能 DNS,這樣當電信的用户訪問論壇的時候,就解析到電信的 IP 上,聯通的用户訪問論壇的時候就解析到聯通 (網通)IP 上。 這樣,百度爬蟲從北京聯通訪問我論壇的時候,速度就快很多了。

我用的智能 DNS 服務是 DNSPod(http://www.dnspod.com/) 提供的,設置的界面如下:

2011-1-3 11:44 上傳

下載附件
(4.8 KB)

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

設置好了以後,還要檢查一下到底優化的效果如何。 可以用監控寶 (http://www.jiankongbao.com/

的工具檢測一下。以前北京聯通的響應速度是 1831 ms 。經過優化,速度確實會提高很多,如:

2011-1-3 11:45 上傳

下載附件
(15.55 KB)

這裏還列出了是哪方面影響速度的因素大。最好是長期監測這個響應速度,因為這個因素的變化能比較大的影響到 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. thread-{帖子 ID}-{帖子翻頁 ID}-{當前帖子所在
    的列表頁 ID}.html

問題就出在 「當前帖子所在的列表頁 ID」 這裏,因為在論壇板塊中,當一個帖子是最新發表或最新回覆的時候,「當前帖子所在的列表頁」 是第一頁,url 中的數
字是
「1」 。當這個帖子很久沒人回覆沉下去的時候,「當前帖子所在的列表頁」 就不知道是幾了,可能出現在第二頁,也可能在第十頁。這樣,每個帖子的 url 經常
在變化。會產生很多的重複頁面,而且 url 經常變化,當前帖子積累的權重會丟失。

為瞭解決這個問題,可以重寫 url 靜態化規則。當然修改頁面代碼也能解決這個問題,但是不方便維護,因為修改後的文件以後可能會被升級文件覆蓋,而且會丟
失部分功能。

論壇用的是 linux+apache,而且論壇是作為一個虛擬主機放在服務器上。 Url 靜態化的過程就這麼操作:

新建一個文本文件,文件名為 「.htaccess」,然後用 UltraEdit 編輯這個文
件,寫入的規則為:

  1. # 將
    RewriteEngine 模式打開
  2. RewriteEngine On
  3. # 修改以下語句中的 RewriteBase 後的地址為你的論壇目錄地址,如果程序放在根目錄中,為
    /,如果是相對論壇根目錄是其他目錄則寫為 /{目錄名},如:在 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
2011-1-3 11:46 上傳

下載附件
(8.79 KB)

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