使用 IIS 7.5 進行 HTTP 重定向
我有兩個 Intranet ASP.NET MVC Web 應用程序託管在一個網站中,可以通過以下路徑訪問:
localserver/old
和localserver/new
. 我已將邏輯從第一個應用程序移動到第二個應用程序,並希望所有localserver/old/exactpath?querystring
對localserver/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 重定向,我實現了:
- 徹底刪除舊網站
- URL 重寫可以配置為使用 301 程式碼響應或“靜默”工作
- 當然,使用者瀏覽器地址欄中的舊網址會隨著新網址的變化而變化
希望我最初的問題和這個答案都很清楚。
將重定向規則添加到新站點,並將綁定從舊站點移動到新站點(多個綁定)。