天天看點

艾偉_轉載:IIS URL Rewriting 和 ASP.NET routing(下)

  首先,如果我們的Web應用程式有任何除了ASP.NET之外的動态網頁技術,那麼選擇是絕對明顯的:用IIS URL重寫子產品(IIS URL-rewrite module)。否則的話,主要判斷規則如下:

如果我們是基于一個已有的ASP.NET網站,而希望盡量不去更改它的話,請使用URL重寫子產品。因為URL重寫子產品能夠在不更改現有程式的基礎上對網站提供“使用者友好”“搜尋引擎友好”的URL。同樣,它也允許我們建立重定向規則,用來重定向搜素引擎的爬蟲到新的URL去。

  然而在實踐中這兩種技術并不是隻能選擇一個,他們往往還可以相輔相成。在接下來的章節中,我們将概述幾個協同使用ASP.NET路由和URL重寫子產品的案例。

  下面的代碼展示了這個案例中可能用到的URL重寫子產品配置代碼:

  提供來自其它網站或其它伺服器上的靜态内容

  靜态内容管理

  當我們網站中的靜态内容移動到了一個新的位址時,我們常常還需要支援老的URL,以做到向後相容,甚至我們并不想讓使用者感覺到檔案或檔案夾移動過了。這種情況下,我們可以使用URL重寫子產品來重寫靜态檔案的路徑,同時使用ASP.NET路由來處理所有的動态ASP.NET頁面。

  阻止某些請求

  URL重寫子產品可以用來阻止某些情況下指定的請求,例如,我們可以阻止網站爬蟲通路某些特定的URL路徑。這種情況下,我們讓被阻止的請求壓根不到達ASP.NET的路由處理,如此來減少伺服器的負載。

  下面的例子展示了如何配置URL重寫規則,來阻止一個指定的網站爬蟲。可以根據指定的user-agent HTTP頭或者IP位址來進行阻止:

  盡管IIS URL重寫和ASP.NET路由在功能上有一些重複,但它們在情景定位上和技術上是互相獨立的。是以,這兩種技術将作為IIS的獨立組建持續存在并進一步發展,并且,兩者有很大的內建潛力。例如,ASP.NET路由可能會參照URL重寫子產品強大的管理工具。而URL重寫子產品可能會與ASP.NET更好的內建,以提供更強大的擴充性和可自定義性。

  IIS URL重寫和ASP.NET路由都能夠用于Web應用程式的URL優化處理,但ASP.NET路由可以看作是一種ASP.NET的優化解決方案,是以,它是web開發人員設計友好URL的應用程式時的好選擇。而IIS URL重寫子產品是一個通用的URL處理機制,定位于多種技術場景,特别是它能夠讓web開發人員和網站管理人員能夠在不改動程式代碼的情況下優化URL。

<a href="http://learn.iis.net/page.aspx/460/using-url-rewrite-module/" target="_blank">URL-rewrite module documentation and tutorials</a>

<a href="http://msdn.microsoft.com/en-us/library/cc668201.aspx" target="_blank">ASP.NET routing documentation</a>

<a href="http://www.asp.net/mvc/" target="_blank">ASP.NET MVC</a>

<a href="http://www.asp.net/DynamicData/" target="_blank">ASP.NET Dynamic Data</a>

<a href="http://learn.iis.net/page.aspx/460/using-url-rewrite-module/" target="_blank">Using URL Rewrite Module</a>

<a href="http://learn.iis.net/page.aspx/761/provide-url-rewriting-functionality/" target="_blank">Provide URL Rewriting Functionality</a>

<a href="http://learn.iis.net/page.aspx/498/rule-with-rewrite-map---rule-template/" target="_blank">Rule with Rewrite Map - rule template</a>

<a href="http://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/" target="_blank">IIS URL Rewriting and ASP.NET routing</a>

繼續閱讀