做SEO的朋友現在都知道了,URL靜態化、URL偽靜態、URL重寫對SEO的重要性,搜尋引擎喜歡靜態網站頁面。今天我們來詳細分析一下URL靜態化、URL偽靜態、URL重寫這三者的區別。
URL靜態化。URL靜態化 就是在你的網站伺服器上現實存在的HTML頁面,每個HTML頁面對應著你網站上的一個URL。常見的可以產生URL靜態化頁面的網站開來源程式有DEDECMS和其它一些CMS內容管理系統,WordPress在安裝外掛程式後也可以實現URL靜態化。URL靜態化和偽靜態不同的地方就是URL靜態化需要產生HTML檔案,如果檔案太多產生一次可能需要很長的時間,這一點不太方便。
URL偽靜態。URL偽態是最常見的網頁存在形式,URL偽靜態看起來和URL靜態化完全一樣,但實際上URL對應的檔案是不存在的,是用技術手段實現的。偽靜態優點很多,比如不產生現實的HTML檔案,就不會佔用網站空間,管理方便,維護方便,和URL靜態化一樣有利於SEO。
URL重寫。URL重寫技術就是我們常見的Rewrite技術,屬於URL偽靜態技術中的一種,現在是被廣泛應用於各種系統內容,比如目前用得最多的LINUX 系統PHP環境,還有Asp.net環境,都是通過編輯設定檔規則實現的,例如我們常用的在LINUX系統PHP環境下的301重新導向,就是通過Rewrite技術實現的。
做SEO的朋友們一定要懂得URL靜態化和URL偽靜態設定,這是做SEO站的基本要求。
頁面靜態化
優點:降低資料庫、web伺服器壓力,訪問速度比較快; 同時,讓搜尋引擎搜錄該連結的幾率大,有助於seo
思路:將"newsDetail.aspx?id=101"動態產生的網頁,下載到自定的檔案夾,然後重新命名:20120319/101.htm。這樣使用者在訪問的時候,就直接存取101.htm,靜態頁的好處這時就體現了。
範例程式碼:
?
?
string newPath = id + ".htm"; string localPath = HttpContext.Current.Server.MapPath("~/20120319/" + newPath); //HostingEnvironment.MapPath(); //建立檔案夾 Directory.CreateDirectory(Path.GetDirectoryName(localPath)); WebClient wc = new WebClient(); wc.Encoding = Encoding.UTF8; //通過WebClient向伺服器發Get請求,把伺服器返回的html內容儲存到磁碟上。以後使用者直接請求html檔案請求。 wc.DownloadFile("http://localhost:7930/newsDetail.aspx?id=" + art.id, localPath); |
頁面的a標籤就可以這麼寫:<a href='20120319/<%#Eval("id") %>.htm'><%#Eval("title")%></a>
靜態頁注意幾個問題:
1.頁面編碼問題:需要儲存的頁面指明編碼方式(<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />),
WebClient下載網頁時,也要注意編碼問題。
2.路徑: 圖片、js、css等都用絕對路徑
3.頁面上不要使用伺服器控制項,都用ajax處理
Url重寫
頁面靜態化和URL重寫目的不一樣,URL重寫和頁面靜態化都可以SEO,
但是URL重寫SEO的開發難度小,頁面靜態化除了SEO之外還能大大降低伺服器的壓力。只有經常被訪問的、很少變化的內容做成靜態化。
範例程式碼
?
protected void Application_BeginRequest(object sender, EventArgs e) { |
?
string url = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath;//獲得使用者要訪問的資源。這個屬性獲得的是虛擬路徑 //判斷使用者訪問的是否是/Art/newsDetail-101.aspx格式 Match match = Regex.Match(url, @"~/Art/newsDetail-(\d+)\.aspx"); if (match.Success) { string id = match.Groups[1].Value; //把用戶端請求發給內部的其他頁面 HttpContext.Current.RewritePath("~/Art/newsDetail.aspx?id=" + id); } } |
總結一下
1.URL重寫和頁面真正的靜態化,都可以做SEO最佳化,他們對於搜尋引擎來說沒有區別。
2.頁面靜態化還有一個主要的原因就是減小伺服器和資料庫壓力,靜態化一般是不變化的資訊,比如新聞等等,所以一個系統可以靜態化的就製作成靜態頁面,如果和伺服器互動多的頁面,那麼還保持原來的動態網頁面,不過通過URL重寫充能,做SEO。
3.還有一些和伺服器互動不多的頁面,比如使用者資訊頁面,一般都是每個使用者產生一個靜態資訊頁面,每次修改使用者資訊的時候,動態產生靜態頁面,然後替換原來的靜態頁面。
4.產生靜態頁也有很多問題,不說定址和映射問題,如果靜態頁面太多的話,儲存和管理也是問題。所以動態網頁面和靜態頁面遇到具體問題要具體分析,選擇最優方案。
5.如果只想做SEO的話,那完全可以只做URL重寫。
6.另外提一下,.net中有頁面緩衝的技術,這個伺服器壓力和產生靜態頁面有些相似,具體技術大家自己查資料吧(其實頁面緩衝是靜態頁的一種折中的辦法,不過它局限在儲存在記憶體中,會佔用記憶體)。