程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> IIS URL Rewriting和ASP.NET routing(下)

IIS URL Rewriting和ASP.NET routing(下)

編輯:關於ASP.NET

在IIS URL Rewriting 和 ASP.NET routing(上)中,我們針對IIS URL Rewriting 和 ASP.NET routing的理念和功能分別進行分析並進行對比,在清楚 了這些基本原理和異同之後,我們該如何在應用中挑選合適的URL優化方案呢? 在本文中,我們將對此進行探討分析,並例舉幾種兩者協同應用的案例。

我們該如何選擇?

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

1. 如果我們的ASP.NET Web應用程序使用了ASP.NET MVC 或者 ASP.NET Dynamic Data 技術的話,請使用ASP.NET路由。我們的應用程序URL優化過程將 從原生支持中獲益(ASP.NET MVC 和ASP.NET Dynamic Data直接包含ASP.NET Routing)。早期的ASP.NET 路由不支持WebForm,而目前的版本已經支持標准的 Web Form應用程序了。詳見此地。

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

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

為網站強制實施標准的URL

舉個例子,比如我們想強制使用http://www.mysite.com/home/about 來替代 http://mysite.com/Home/About。 當客戶端請求一個不符合標准格式的URL時, 客戶端獎杯跳轉到一個符合標准格式的URL。在這種情況下,我們可以使用URL重 寫模塊來強制URL跳轉,而使用ASP.NET 路由來選擇一個handler來處理所請求的 URL路徑。

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

<rewrite>
     <rules>
         <rule name="Enforce canonical hostname"  stopProcessing="true">
             <match url="(.*)" />
             <conditions>
                 <add input="{HTTP_HOST}" negate="true"  pattern="^www\.mysite\.com$" />
             </conditions>
             <action type="Redirect" url="http://www.mysite.com/{R:1}"  redirectType="Permanent" />
         </rule>
     </rules>
</rewrite>

提供來自其它網站或其它服務器上的靜態內容

例如,我們的網站部署在多台服務器上,而動態頁面的內容部署在一台服務 器或一個網站上,而所有的靜態內容部署在另一台服務器或另一個網站上。這時 ,我們可以使用URL重寫模塊協同IIS Application Request Routing module 來 將對鏡頭內容的請求轉到靜態內容服務器(網站)上去,而由當前服務器處理所 有的動態網頁請求。這中環境下,ASP.NET 路由恰好只對所有的動態網頁內容起 效,而不對靜態內容其效果。

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

<rewrite>
   <rules>
     <rule name="Forward to static file server">
       <match url="^.+\.(?:jpg|bmp|gif)$" />
       <action type="Rewrite" url="http://static_file_server/ {R:0}" />
     </rule>
   </rules>
</rewrite>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved