Iis

使用 IIS 7.5 進行 HTTP 重定向

  • October 3, 2013

我有兩個 Intranet ASP.NET MVC Web 應用程序託管在一個網站中,可以通過以下路徑訪問:localserver/oldlocalserver/new. 我已將邏輯從第一個應用程序移動到第二個應用程序,並希望所有localserver/old/exactpath?querystringlocalserver/new/exactpath?querystring.

我試過的:

首先,我嘗試使用URL Rewrite,正如iss.net論壇上提到的那樣。

<rule name="DomainRedirect">
   <match url="(.*)" />
   <conditions>
       <add input="{HTTP_HOST}" pattern="^old$">
   </conditions>
   <action type="Redirect" url="/new/{R:1}" />
</rule>

我嘗試在“預設網站”級別(託管在那裡的兩個 Web 應用程序)和網路伺服器的頂層設置此規則,但沒有成功。

它會導致無限的重定向循環。如果它很重要,舊的網路應用程序有OldController,所以使用者請求的完整路徑看起來像localserver/old/old/actionname?queryparams

現在如何運作:

我已經在 IIS 中安裝並設置了標準 HTTP 重定向模組,但它要求我將舊的 Web 應用程序保留在伺服器上。

我想要的是:

完全刪除舊的 Web 應用程序,只需將重定向規則設置為更高級別的 IIS 伺服器上的新應用程序。這可以以某種方式實現嗎?如果可以,我應該設置規則以及它的外觀。

由於沒有得到滿意的答案,我把這個問題擱置一旁,繼續使用 HTTP Redirect。但後來我又給了一次 URL Rewrite 的機會,終於它按我的預期工作了。

在 IIS 頂層(網路伺服器級別),我們只需要為 URL Rewrite 模組設置一個非常簡單的規則。它可以使用 IIS 管理單元或在配置文件中手動%windir%\System32\inetsrv\config\applicationHost.config完成<webserver>

它看起來像這樣。

<rewrite>
   <globalRules>
       <rule name="redicttonew" enabled="true">
           <match url="^oldapp/registration/register" />
           <action type="Rewrite" url="newapp/registration/register" />
       </rule>
   </globalRules>
</rewrite>

通過使用 URL 重寫而不是 HTTP 重定向,我實現了:

  1. 徹底刪除舊網站
  2. URL 重寫可以配置為使用 301 程式碼響應或“靜默”工作
  3. 當然,使用者瀏覽器地址欄中的舊網址會隨著新網址的變化而變化

希望我最初的問題和這個答案都很清楚。

將重定向規則添加到新站點,並將綁定從舊站點移動到新站點(多個綁定)。

引用自:https://serverfault.com/questions/526133