今天看了一篇文章,主要是講,如何制作讓搜索引擎可以友好訪問的鏈接,大概的內容是這樣的:很多的時候我們在進行查詢的時候,總是會以這樣的鏈接方式傳遞參數:
http://www.yoursite.com/query.aspx?typeid=2
這個鏈接大家看得很明白,就是我希望查看typeid=2的相關記錄的信息。
但是這有個問題就是,搜索引擎的spider進行URL解析困難,因為它不太會理解這種帶有參數的方式。
如果希望,每個typeid所對應的數據庫查詢的結果都能夠被搜索引擎輕易的進行收錄,我們或許需要寫成這樣的連接方式。
http://www.yoursite.com/pagetype1.aspx
http://www.yoursite.com/pagetype2.aspx
依次類推。
按照通常的想法,這就需要寫n個這樣的頁面了,相當的繁瑣。
不過在ASP.NET中,可以利用Application的BeginRequest的事件進行URL的轉換[將靜態的頁面url的形式轉換為帶參數的動態頁面url],就可以輕易的解決這樣的問題了。請看如下的代碼:
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext incoming = HttpContext.Current;
string oldpath = incoming.Request.Path.ToLower();
string pageid; // page id requested
//利用正則表達式對url進行解析
Regex regex = new Regex(@"page(/d+).aspx", RegexOptions.IgnoreCase |
RegexOptions.IgnorePatternWhitespace);
MatchCollection matches = regex.Matches(oldpath);
if(matches.Count > 0)
{
//如果滿足條件,則進行改寫,生成相應的帶參數的url方式。
pageid = matches[0].Groups[1].ToString();
incoming.RewritePath("Process.aspx?pageid=" + pageid);
}
}
接下來就是需要做一個對應的動態頁面了。
<%
string pageid = Request.QueryString["pageid"];
// Create the page content based on this pageid taken here
%>
可以來訪問一下我做的測試頁面。請自己修改page後面的數字。
http://lealting.europe.webmatrixhosting.net/page11.aspx
http://lealting.europe.webmatrixhosting.net/page22.aspx
我想我們使用的blog是不是也使用了這樣的機制呢?