天天看點

Intelligencia.UrlRewriter 在IIS7.0 內建模式應用程式池下的配置說明

  1. Web.Config 配置。
1.1 配置<configSections>節
    <!---->
    <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,Intelligencia.UrlRewriter" />
    <!---->
           
1.2 配置<system.webServer>節

該節點下配置的 <modules> , <handlers> 僅适用于內建模式,而不适用于經典模式,如經典模式下運作的應用程式則忽略web.config的 <system.WebServer> 節中指定的所有托管代碼子產品和處理程式,這種模式下web應用程式應該在 <syste.web> 節的 <httpModules> 和 <httpHandlers> 中定義子產品和處理程式。

當在<syste.web> 節點的 <httpModules> 和 <httpHandlers> 節中配置了定義子產品和處理程式,并且應用程式池選擇在內建模式  ( iis7.0以下) 下運作時,配置 <validation> 節 可以忽略因為在<syste.web>中配置的定義子產品和處理程式而造成以下錯誤

Intelligencia.UrlRewriter 在IIS7.0 內模組化式應用程式池下的配置說明
<modules runAllManagedModulesForAllRequests="true">
           <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule" />
    </modules>
           
1.3 配置<rewriter>節
該節點 名字 rewriter 是在 <configSections> 節點中配置的 <Sectioin> 的 name 值 ,用于配置URL重寫規則。
  <rewriter>
    <rewrite url="~/([a-z0-9A-Z_]+)/(.+)\.(jpg|png|gif|swf|.flv{1})" to="~/$1/$2.$3" />
  </rewriter>
           
1.4 在IIS7.0經典模式中運作應用程式池,或者在IIS7.0以下運作網站,需要配置<system.web>節
在經典模式下運作應用程式池(或在IIS7.0以下運作),需要配置以下節點。但是經過測試在這種模式下,并不能以URL字尾進行比對重寫 (測試時使用的是MVC3.0,不清楚為什麼識别不了 “.”符号,猜測可能原因:在這種模式下所有的靜态資源檔案被MVC預設的靜态處理程式StaticFile進行了預設處理而沒有預先進行Url重寫,有知道具體原因的兄弟歡迎留言告知,謝謝。但在內建模式下是可以被重寫的。),但是可以重寫不帶“.”的URL。
    <httpModules>
      <add type="Intelligencia.UrlRewriter.RewriterHttpModule,  Intelligencia.UrlRewriter" name="UrlRewriter" />
    </httpModules>