Domain-Name-System

如何在使用 IIS 7 維護子域的同時進行 HTTP 重定向

  • March 23, 2011

我的問題類似於 將子域重定向到新域上的子域,但我使用的是 IIS 7。應用程序是 ASP.NET 框架 2.0。

我有一個 url cust1.olddomain.com,我需要重定向到 cust1.newdomain.com。

我需要維護子域,但我需要更改域,以便使用者永遠不會看到 olddomain.com,並且我有 X 個 cust 子域。

我可以使用 DNS 將所有內容路由到需要去的地方,但我不知道如何更改域,以便永遠不會顯示 olddomain.com。我希望將其設為 301 重定向,但從我目前閱讀的內容來看,我認為這是不可能的。

想法?

是的,我回答了我自己的問題!

對於 IIS 7,您可以從 MS Web 平台安裝程序安裝URL 重寫模組或單獨下載。安裝後,這實質上為您提供了 IIS 中 mod_rewrite 的功能。

為了解決我的重定向問題,我創建了一個新的重定向條目,如下所示。URL 重寫模組提供了一個使用者界面,用於創建重定向,然後將條目寫入站點的 web.config,就像許多其他 IIS 模組一樣。

<rewrite>           
       <rules>
           <rule name="RedirectToNewDomain" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
               <match url="*" />
               <conditions logicalGrouping="MatchAny">
                   <add input="{HTTP_HOST}" pattern="*.olddomain.com*" />
               </conditions>
               <action type="Redirect" url="http://{C:1}.newdomain.com{C:2}{PATH_INFO}" appendQueryString="false" />
           </rule>
       </rules>
   </rewrite>

我對此重定向所做的是允許所有 url 使用萬用字元匹配 url="*" 進入規則。然後我在舊域上進行有條件的模式匹配。條件模式匹配中的星號允許我對匹配模式的任何內容進行反向引用,然後我將其作為 {C:1} 和 {C:2} 插入重定向操作中。正是 {C:1} 反向引用允許我在重定向期間維護我的子域,並且是問題的答案。

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