無論是普通使用者還是搜尋引擎都更青睞靜態頁面,為什麼呢?下面我們先了解一下搜尋引擎及普通使用者獲取頁面資訊的過程。
普通使用者
通過瀏覽器傳送指定的 URL 請求,Web 伺服器收到請求後定位到指定的檔案,或者根據程式從資料庫中呼叫相應的資料返回到瀏覽器。經過瀏覽器處理後,使用者就可以看到一個完整的檔案。
搜尋引擎
相當於一個用戶端,只是搜尋引擎是一個比較特殊的用戶端。搜尋引擎在對指定的 URL 傳送存取請求後,也像普通使用者一樣能得到一個檔案。再對該檔案進行分析,提取其中的資訊並儲存。
對於搜尋引擎來說,無論是抓取靜態頁面還是動態頁面都不存在任何困難。但是,無論是普通使用者還是搜尋引擎,獲取靜態頁面的速度相對動態頁面更快,這樣在同樣的時間內就能獲取更多的資訊。因而,搜尋引擎會更重視靜態頁面,並賦予靜態頁面更高的權重。
實際上,我們不可能把網站中所有的內容都做成靜態頁面,但可以對動態頁面進行相應的處理,讓其對於搜尋引擎來說是靜態的,這就是常說的動態頁面靜態化。
常用的方法有 URL 重寫及生成靜態頁面。
為何採用靜態化 URL
現在的網站絕大多數是資料庫驅動的。頁面由程式實時生成,而不是真的在伺服器上有一個靜態 HTML 檔案存在。當使用者存取一個網址時,程式根據 URL 中的引數呼叫資料庫資料,實時生成頁面內容。因此,動態頁面相對應的 URL 原始狀態也是動態的,包含問號、等號及引數資訊。
搜尋引擎在發展初期一般不太願意爬取和收錄動態 URL,主要原因是可能陷入無限迴圈或收錄大量重複內容,造成資源極大浪費。
所以早前的搜尋引擎對動態 URL 敬而遠之,要想網站頁面被充分收錄,站長需要把動態 URL 轉化為靜態 URL。
從 SEO 的角度考慮,URL 靜態化有以下三大好處。
1) 網頁 URL 靜態化有利於搜尋引擎收錄
對比靜態頁面和動態頁面,搜尋引擎更喜歡靜態頁面,對於靜態頁面也更好抓取收錄,這樣對於網站優化有很大的好處,更利於排名。
可以觀察新浪、網易、阿里巴巴等大型入口網站,這些網站的頁面大多採用靜態或偽靜態頁面來顯示,可想而知,連新浪這樣的大型入口網站都要對網頁 URL 進行靜態化處理,這就足以說明網頁 URL 靜態化能給網站帶來極大的好處。
2) 網頁靜態化有利於網站的穩定性
首先從安全形度來看,靜態頁面不容易遭受駭客的攻擊,駭客從網址中無法看出網站的後台地址、網站的程式、資料庫的地址,這樣就比動態頁面要安全得多。
另外,靜態頁面不會因為程式、資料庫等出問題而影響網站頁面的正常開啟,可以看出靜態頁面會使網站更加穩定,增加網站的信任度。
3) 網頁靜態化有利於提高速度
網站優化中,網站頁面開啟速度的快慢是權重及排名提升的重要因素,開啟速度越快,SEO 優化效果越好。
眾所周知,動態頁面開啟都是要呼叫資料庫內容的,這樣就影響了網站頁面的載入速度,而靜態頁面則不用,減少了一些環節,提高了網站反應速度。
怎樣靜態化 URL
靜態化 URL 常見的方法是使用伺服器的 URL 重寫模組。在 LAMP(Linux+Apache+MySQL+PHP)伺服器上一般使用 mod-rewrite 模組,Windows 伺服器也有功能相似的 ISAPI Rewrite 等模組。
以 LAMP 伺服器為例,要想把網址:
http://www.example.com/SEO.php?id=123
靜態化為:
http://www.example.com/SEO/123
需要啟用伺服器 mod-rewrite 模組,然後在
.htacces
檔案中寫入如下程式碼:
RewriteRule/SEO/([0-9]+) /SEO.php?id$1
URL 重寫程式碼基於正規表示式,每個網站的動態 URL 結構不同,伺服器設定也可能不同,程式碼也就不同,正規表示式的寫法比較複雜,千變萬化,通常需要程式設計師編寫。
在寫 URL 靜態化程式碼時必須非常小心,寫錯一個字元、多寫一個斜槓等微小的不同都可能造成災難性的後果。
嚴格來說,這裡所說的 URL 靜態化應該稱為“偽靜態化”,也就是說伺服器上還是不存在相應的 HTML 檔案,使用者存取時還是動態生成頁面。只不過通過 URL 重寫技術使網址看起來像是靜態的。
也有的 CMS 系統可以實現真正靜態化。站長增添產品或文章後,系統會自動生成真實存在的靜態 HTML 檔案。
對搜尋引擎來說,真正的靜態與偽靜態沒有區別。