2010-11-12 72 views
5

我按照說明Learn IIS's webpage爲我的asp.net應用程序添加帶有重寫映射的靜態重定向。ASP.NET/IIS7 Url重寫地圖不起作用

下面是配置:

<rule name="Redirect rule1 for Information" stopProcessing="true"> 
    <match url=".*" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{Information:{REQUEST_URI}}" pattern="(.+)" /> 
    </conditions> 
    <action type="Rewrite" url="{C:1}" appendQueryString="true" /> 
</rule> 

而且

<rewriteMaps> 
    <rewriteMap name="Information"> 
     <add key="/Information/CorporateSales.aspx" 
      value="/KB/Information/CorporateSales" /> 
     <add key="/Information/ComputerRepair.aspx" 
      value="/KB/Information/ComputerRepair" /> 
    </rewriteMap> 
</rewriteMaps> 

這是即使最初是由在IIS的管理器嚮導使用重寫地圖創建。

所以這個想法是,/Information/CorporateSales.aspx - >/KB/Information/CorporateSales 301重定向(MOVED永久)。

但是我只是得到原始的aspx頁面(我們稍後移除)加載。我甚至刪除文件因爲它是默認爲現有資源,並與我只是得到一個普通的404沒有重定向。

任何人有想法?

讓我澄清了一句:

重寫模塊工作,它的安裝和運行。我的標準正則表達式規則很好地工作。但我的重寫地圖沒有。

回答

-2

您是否重置應用程序池和iis網站?

在某些情況下,可能需要長達72小時(iirc)才能在全世界傳播。

+0

這是一個本地開發機器,我已經重置了不僅應用程序池,但所有的iis以及。 – Aren 2010-11-13 00:22:16

0

您是否將Url重寫作爲IIS7/7.5的一部分進行安裝?這不是默認安裝的。另外,請確保您的應用程序池設置爲集成管道模式,而不是經典。

編輯

從這:

http://learn.iis.net/page.aspx/469/using-rewrite-maps-in-url-rewrite-module/

這只是我看你做的是增加了 'stopProcessing' 屬性的東西。你有沒有嘗試刪除?

+0

它被安裝和集成 – Aren 2010-11-13 00:38:22

2

我有類似的問題,發現這個問題。我花了一段時間,但我能弄清楚問題所在。

我的rewriteMap包含url「/Default2.aspx」和「/Dashboard.aspx」。

當我去Default2.aspx,我會得到一個404,而不是按預期重定向到Dashboard.aspx。

我發現的問題是,在我的機器上,應用程序運行在一個子目錄中。如果我使用完整路徑(包括應用程序文件夾),例如「/TestSite/Default2.aspx」,rewriteMap路徑纔會起作用。

因此,我可以在我的rewriteMap中添加重複的條目來說明開發人員機器上的應用程序目錄,但這似乎很混亂。我查看了應用程序中沒有此問題的其他重寫規則,並且我注意到他們正在使用{REQUEST_FILENAME}變量,而不是{REQUEST_URI}。所以我將規則切換爲使用{REQUEST_FILENAME}並從我的rewriteMap中的urls中刪除第一個斜槓。

0

以前我遇到過和你描述的一樣的問題。

你能更新你的代碼

<match url="(.*)" /> 

,我希望你知道,

<add input="{Information:{REQUEST_URI}}" pattern="(.+)" /> 

這種情況下將捕獲完整的URL,除了域名。在這個網址 例如: www.example.com/Information/CorporateSales.aspx 它會檢查RewriteMap指令

Information/CorporateSales.aspx匹配條件和確保它不會匹配這個網址

www.example.com/old/Information/CorporateSales.aspx

5

本文下面http://www.iis.net/learn/extensions/url-rewrite-module/using-rewrite-maps-in-url-rewrite-module和代碼工作了我。

<rewrite> 
    <rules> 
     <rule name="Redirect rule1 for RedirectURLs"> 
      <match url=".*" /> 
      <conditions> 
       <add input="{RedirectURLs:{REQUEST_URI}}" pattern="(.+)" /> 
      </conditions> 
      <action type="Redirect" url="{C:1}" appendQueryString="false" /> 
     </rule> 
    </rules> 
    <rewriteMaps> 
     <rewriteMap name="RedirectURLs"> 
      <add key="/privacy.php" value="/privacy" /> 
     </rewriteMap> 
    </rewriteMaps> 
</rewrite>