優化裡一個比較重要的部分一直想寫,今天終於有空來詳細寫下了也就是本文的主題《搜索引擎優化之URL偽靜態》,下面進入正題:搜索引擎優化之URL偽靜態!
1,URL是什麼相信不用再介紹了。
2,偽靜態。什麼叫偽靜態?為什麼會出現偽靜態這個名字?既然有偽靜態那麼一定還存在真靜態?對此問題,需要詳細介紹下網站訪問地址的變遷過程。
早期的網站因為沒有動態語言(也就是今天主流的網站開發語言中的PHP/JSP/ASP/.Net等)的支持,全部要靠手工開發寫HTML然後保存為擴展名為ab.html這種文件來供大家浏覽,其訪問地址可能是http://www.net.com/ab/ab.html,那麼其效率和豐富度及多樣性可以想象是很不行的。後來出現了動態語言,讓這一切變為了歷史,強大的動態語言結合數據庫,讓海量數據的大站和叫互性更強的多樣性網站成為了現實,於是訪問地址變成了http://www.net.com/ab/ab.php?id=100。
早期搜索引擎不是那麼強健的時候,對於這種帶?id=100的動態參數形式的頁面收錄不是那麼的方便,於是早期有建議和說法是將http://www.net.com/ab/ab.php?id=100變成http://www.net.com/ab/100.html這種訪問地址更有利於搜索抓取,這裡的100.html就是將ab.php?id=100的數據生成的靜態頁面,在服務器硬盤上面是真實存在這個文件的。但隨著數據量的增加,不是所有站都能完全生成靜態網頁而且這種生成靜態頁本身也有一些不足雖然生成的靜態頁對訪問速度對搜索都有益。
於是一種URLRewrite(URL重寫)也就是偽靜態技術出現了,最典型的就是這種博客的地址,http://www.semyj.com/archives/1603就是使用了URL重寫,這類地址對用戶比較友好對搜索也是如此,而且因為他僅僅是地址重寫不是真正的生成一個靜態文件就規避掉了生成靜態頁面所帶來的一些不足。
了解了URL的歷史,那麼我們來看偽靜態到底是如何實現的呢?這裡以IIS下的偽靜態作為例子來說明下。
首先先去搜索一個名字叫ISAPI_Rewrite的軟件壓縮包(Apache裡實現偽靜態使用的是Apache‘s mod_Rewrite)。下載下來之後解壓,比如我這裡解壓到D:\ISAPI_Rewrite3\,然後打開IIS,在IIS裡的“網站”這個功能項上右鍵屬性-》選擇ISAPI篩選器-》添加,名字可以寫ISAPI_rewrite,我這裡寫的是ISAPI_rewrite3,可執行文件選擇的是D:\ISAPI_Rewrite3\ISAPI_Rewrite.dll,然後確定。
如下圖所示,然後重啟IIS,正常情況下應該在你的ISAPI篩選器裡isapi項前面有個綠色箭頭表示擴展安裝正確,如果出現紅色表示不正常工作,這是最好檢查下你的isapi_rewrite目錄的權限,加個everyone可讀權限應該就可以解決問題了。
正常安裝了isapi_rewrite擴展之後,在其所在目錄下有個文件叫httpd.conf,用記事本打開。這個文件就是負責將http://www.semyj.com/archives/1603這種URL轉換為形如http://www.semyj.com/archives/article.php?id=1603這種真實的訪問的(這裡僅僅是以此博客地址做例子說明,不代表其博客真的是這個訪問地址),那麼如何實現將http://www.semyj.com/archives/1603轉換為http://www.semyj.com/archives/article.php?id=1603呢?
在httpd.conf裡先建一行,這麼寫:
RewriteRule /archives/(\d+) /archives/article\.php\?id=$1這裡的規則分為三部分:
1,是開頭的RewriteRule,這個是固定格式命令,直接以這個來開頭然後寫規則即可。
2,/archives/(\d+),這裡的規則是從http://www.semyj.com/archives/1603裡概括出來的,可以看到http://www.semyj.com/archives/1603裡的文章規則都是http://域名/archives/數字,那麼在寫規則時就把完整的規則定義為/archives/(\d+),其中\d表示數字,+號表示最少要重復前面的數字一次。
3,/archives/article\.php\?id=$1,這裡就是將前面的規則完整映射成真實的訪問地址,\。 \?表示這裡是普通字符,$1代表前面匹配出來的值,也就是數字1603。
很多站都存在將URL偽靜態以實現對用戶對搜索都友好的目的,可以自由控制目錄深度,便於搜索抓取。
友情提醒:URL偽靜態如果書寫不正確可能導致出現無限空間的URL,導致搜索抓取出現異常,憑空多出來很多不存在的頁面和地址,所以在做偽靜態之後需要詳細測試和及時跟蹤,這一切的前提是你對正則表達式要了解。同時具體的isapi_rewrite的其他的命令使用方法和規則可以GOOGLE之。