2010-11-09 163 views
6

我有一個.net 4.0 Web應用程序託管在IIS7服務器上。IIS 7 URL重寫規則不適用

看完這篇文章:http://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/關於從另一臺服務器提供靜態內容,這樣cookies不會隨每個靜態文件的請求一起發送,我試過了,但沒有取得太大的成功。

這是寫在web.config文件中的一部分:

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="images" stopProcessing="true"> 
       <match url="^images/(.*)$" /> 
       <action type="Rewrite" url="http://static-server.com/images/{R:1}" appendQueryString="true" logRewrittenUrl="true" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

利用所定義的這條規則,每一個環節在圖像文件夾中的文件應該rewriten到靜態服務器URL。但是這完全不起作用,現在圖像文件夾中的每個圖像都返回404未找到。任何想法是什麼可能導致這種行爲或不同的解決方案,如何從不同的服務器上的特定文件夾提供文件,而不必經過大量代碼並更改所有鏈接以鏈接到靜態服務器?

我也嘗試使用重定向動作類型,而不是重寫動作,這實際上工作,但它無視我試圖服務於不同服務器上的文件的原因(這樣請求發送給我動態內容服務器具有所有必需的cookie,並被重定向到靜態服務器,這實際上比從動態內容服務器提供圖像更差)。

回答

2

我不認爲這個規則會爲你解決這個問題。它可能不會重寫發送給用戶的頁面中的鏈接。

您鏈接到的文章建議您與「IIS Application Request Routing module」一起執行此操作。這是路由模塊實際上改變發送到客戶端的文件內的鏈接。

+0

我按照http://learn.iis.net/page.aspx/485/define-and-configure-an-application-request-routing-server-farm/逐步安裝了'Application Request Routing'模塊和http://learn.iis.net/page.aspx/484/configure-3-tier-deployment-architecture-using-application-request-routing/沒有正面結果。只有那時我沒有得到一個404,但500一個。也許配置ARR模塊的方式有什麼不對嗎? – Atzoya 2010-11-09 14:10:47

+0

什麼是500錯誤(檢查日誌) – 2010-11-09 14:24:06

+0

它肯定是ARR模塊導致的問題,但我似乎不能配置它。已決定採用不同的方法(手動更改所需資源的一些路徑),直到找到如何正確配置模塊。當我發現是什麼導致了這個問題時,我會用我所做的更新我的帖子。 – Atzoya 2010-11-11 16:02:07