搜索引擎優化編程(二):友好的URL地址
作者:晉城網站建設 日期:2012-02-16
在前一篇文章中有位朋友的評論我覺得很有必要補充說明一下,我們看重搜索引擎優化編程并不是說不注重用戶的使用。我們在考慮一個網站經營的綜合因素時,對搜索引擎做一定的優化顯得很有必要。有時候,是我們網站結構本身不夠合理,不容易被搜索引擎收錄,這樣一來,搜索引擎優化句成了對站點結構本身的合理化。有的時候,我們把“蜘蛛”當作一名嚴格的用戶來看待也許更好理解。在這里,我謝謝大家留下寶貴的時間來給我寫評論,我沒考慮到的我將會在后面補充,謝謝大家!好了,繼續今天的話題。
友好的URL地址,很多網站做到了這一點,有些人會理解為友好的URL地址更便于用戶記憶,僅此而已。事實上,這只是一個方面,它對于搜索引擎優化也有一定的好處。現在的搜索引擎收錄時,對不同的地址確實不會有不同的待遇。我現在舉出兩個實例:
www.seoexample.com/news.aspx?id=1&page=1
www.seoexample.com/hello_world.html
類似這樣的網址我們經常遇到,很顯然,后者的地址更容易被我們記住。
通常我們是通過重寫URL地址來做到這一點的。我暫時所知道的重寫URL地址好處有:
1搜索引擎在收錄時會將地址加粗顯示。
這一點大家可以去試試就知道了,本來想截圖,太占地方。
2隱藏真實目錄。
這似乎對搜索引擎優化沒有什么好處,但是對于其他方面的好處大家可想而知。
另外,這樣做網頁被搜索引擎收錄似乎更容易一些,搜索引擎往往對靜態頁面更感興趣。重寫方式良好URL地址似乎更容易被“蜘蛛”理解,這點,我也沒有很充分的理由,所以先不單獨列作一條。
注意:重寫URL地址的好處是很明顯的,但是在效率方面會讓你的站點有所降低,尤其是不當的重寫方式,會大大地降低站點的運行效率,有的甚至會發生錯誤。當然,一個好的重寫方式自然給站點帶來的效率影響也是很小的,因此,這些影響自然就微乎其微了。
下面向大家介紹一些常用的URL重寫方式(一般不喜歡貼圖片,但是為了更方便地說明問題還是貼了幾張)。這里需要申明一下,由于我們使用最多的還是IIS,在這里使用的均為IIS6.0,其它IIS版本如果遇到相關需要下載的軟件的話請選擇自己合適的版本。
1) ISAPI_Rewrite官方網站:http://www.isapirewrite.com/
IIS層次的URL重寫,使用比較方便。只需要簡單地修改配置文件就可以了,但是不是開源也不是免費的,試用期只有30天。我在這里只是簡單的說明,有需要的朋友購買后可以去看完整的使用文檔。
從官方網站下載后,請選擇默認安裝。在安裝完成后,在安裝目錄找到httpd.ini,將其屬性修改為可寫,我們的重寫規則就寫在里面。當你確定你的重寫規則全部寫好后,可以將其又改為只讀。
打開httpd.ini文件,我們在后面添加自己的重寫規則。這里添加一條示例規則:
RewriteRule ^/hello-world.html$ /news.aspx?id=1
內容很簡單,就是將hello-world.html重寫到/news.aspx?id=1(^和$分別為規則內容的分界符)。這種方法只是簡單的介紹,而且試用版只能對整個IIS配置,不可以對逐個站點配置,下面是運行效果圖:
2) UrlRewriting.Net官方網站:http://www.urlrewriting.net
這是我們使用得比較多的一種URL重載的工具,開源而且使用也同樣方便。在官方網站下載程序的時候下一個示例代碼下來的話,使用就很容易了。一些工具,有時候不太愿意說使用方法,因為官方網站一般都沒有示例代碼下(沒有我一定會提供)。但是有朋友更希望我提供部分演示,因為去下示例麻煩,我就簡單的示例一下吧。
使用起來其實也比較簡單,和前面的一樣,需要一點點正則表達式的知識,有興趣的朋友稍微去看下就ok了。做了一個示例,這里就不把全部代碼貼出來了,太浪費空間。只是在這么強調一些地方,首先是記得把下載到的DLL文件添加到引用,在我的演示示例中,大家可以參照我的webconfig文件的寫法,關鍵部分是下面的代碼:
<rewrites>
<add name="Rewrite"virtualUrl="^~/(.*)/(.*).html"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/Default.aspx?category=$1&id=$2"
ignoreCase="true" />
</rewrites>
這個節點是我們存放重寫方法的地方,其余部分都是一樣的。我這里展示了兩個參數的URL重寫,因為一個參數很容易,大家在寫的時候可能會遇到問題,重寫規則與第一種方法中類似。重寫后的效果如下:
簡單的演示代碼如下:UrlRewritingDEMO.rar
還有一種常用的URL重寫工具與UrlRewriting.Net類似,叫UrlRewriter.Net,使用也幾乎相同,這里就不再介紹了。
3)創建自己的重寫代碼
使用工具,有時候有一些局限性。比如說在某些虛擬主機中,可能就不支持。這樣我們可以創建自己的重寫代碼,雖然稍微復雜,但比較適合規模較小的站點。借助全部應用程序類,我們可以將重寫方法寫在應用程序啟動運行部分,就是大家都知道的Global.asax文件。
在Application_BeginRequest()方法中可以完成我們的重寫方法。我在這里簡單地演示一下,相信很多人都使用過:
void Application_BeginRequest(object sender,EventArgs e)
{
HttpContext context = HttpContext.Current;
string curURL = context.Request.Path.ToLower();
if (curURL == "/website/test.html")
{
context.RewritePath("~/default.aspx");
return;
}
}
整個重寫過程就在這個文件中完成,只是在轉向固定的地址時有點麻煩。
前面介紹了幾種URL重寫的方法,使用起來都比較方便。但有一種能達到目的作法(友好的URL地址)并非URL重寫一種。很多朋友都把從動態地址轉換到動態地址的過程叫做靜態化(這樣并不準確)。就像現實生活中一樣,很多東西都真真假假得讓人模糊得分辨不出來。靜態化也是這樣,通常把靜態分真靜態和偽靜態,但是這樣的真假似乎對我們更有好處,不像現實生活中。而且只要我們稍加觀察,就能分辨其中的真偽。很顯然,偽靜態只是形式上的靜態,確實,它只是把URL地址轉換成靜態了,內容仍然是動態的。另外一種方式則是確實將(部分)內容完全靜態化了,至少生成了一個靜態的文件。
好多朋友其實都知道,就是利用模板生成了新文件。現在很多站點都這么做了,這樣做有一個很大的好處,就是在訪問量很大時可以很大程度地減小數據庫的壓力。當然,就算生成了靜態的模板,有些數據還是需要動態獲取的,這時候我們使用ajax可以比較方便地獲取數據。曾經為了使用方便,弄了一個利用模板文件生成文件的類,使用起來比較簡單。這樣做的原理本來就比較簡單,有興趣的朋友可以弄去看看,代碼就不貼出來了。使用的時候很容易(如果你把剛剛我說的那個文件放到了App_Code文件夾的話),我舉個例子:
string[] strNewsHtml = new string[] { NewsTitle,NewsBody, PubTime.ToString(), UserName };
這里是需要生成的內容
string[] strOldHtml = new string[] { "@Title", "@NewsBody", "@PubTime", "@UserName" };
這里是需要替換的標簽
Files.CreatHtmlPage(strNewsHtml, strOldHtml, "newsmode.htm", strFilePath)
生成新文件
模板文件生成文件類下載CreateFiles.rar剩下的內容就是用ajax獲取你的動態內容了,相信大家都經常用到了,在這里就不說了。
不知不覺就寫了這么多了,也許有朋友說我寫的內容太簡單,沒有什么內涵。關于這點我也不好說什么,只是盡自己的努力希望能給一些朋友帶來方便吧(我一直的目標是把技術文章寫成象科普文章一樣讓人看了就懂)。記得我當初學習的時候,沒有人教,就自己買了幾本書看,有的時候一個問題要郁悶許久,真的經常有放棄的念頭。現在過了那種時常想放棄的日子,還需要更加繼續努力,希望和大家一起進步!