2011-08-10 197 views
64

我正在使用Windows Server 2008與IIS7。我需要將前往www.mysite.com的用戶重定向到wwww.mysite.com/menu_1/MainScreen.aspx。這裏是我的項目文件結構:IIS7 URL從根目錄重定向到子目錄

-Sites 
-Default Web Site 
    -Menu_1 
    -MenuService 
    -VscWebService 

我真的很感謝這方面的幫助。

回答

93

這是它。此代碼添加到您的web.config文件:

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="Root Hit Redirect" stopProcessing="true"> 
       <match url="^$" /> 
       <action type="Redirect" url="/menu_1/MainScreen.aspx" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

它會做301永久重定向(URL將在瀏覽器中進行更改)。如果你想擁有這樣的「重定向」是無形的(重寫,內部重定向),然後使用這個規則(唯一的區別是,「重定向」已取代了「重寫」):

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="Root Hit Redirect" stopProcessing="true"> 
       <match url="^$" /> 
       <action type="Rewrite" url="/menu_1/MainScreen.aspx" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
+0

感謝您的回覆。它仍然不適合我。首先,我將其添加到wwwroot web.config中,但沒有在那裏工作。所以我打開了服務器級別的URL重寫(服務器>站點>默認網站),但它仍然沒有工作。我在這裏做錯了什麼?再次感謝您的幫助。 – user881148

+1

@ user881148絕對有效的規則 - 我在發佈前測試過。 1)也許它被放置在錯誤的順序/地方?規則的順序很重要:如果您已經有了一些規則,那麼在其他規則之前添加此規則。 2)_「服務器>站點>默認網站」_ - 這不是服務器級別 - 它是由IIS安裝程序創建的默認正常網站 - 無非就是如此。 3)嘗試通過GUI(IIS管理器)手動創建此規則 - 這很簡單 - 只需填寫幾個字段。 4)也許你的ASP。NET路由處理所有重寫並忽略URL重寫模塊。以某種方式檢查這一刻(抱歉,我不擅長ASP.NET)。 – LazyOne

+0

再次感謝您的回覆。我檢查了上面提到的所有內容,並且沒有添加其他規則。我試圖通過默認網站> URL重寫添加它,它也沒有工作。我也沒有任何ASP.NET重新路由設置。 – user881148

4

您需要從Microsoft下載:http://www.microsoft.com/en-us/download/details.aspx?id=7435

該工具被稱爲「Microsoft URL重寫模塊2.0 IIS 7」,並描述了由微軟如下: 「URL重寫模塊2.0提供了一種改變請求的URL的一個基於規則的重寫機制,他們得到由Web服務器處理之前並修改響應內容之前,它被提供給HTTP客戶端「

12

我無法得到這與接受的答案工作,主要是因爲我不知道在哪裏輸入該代碼。我到處尋找一些有意義的URL重寫工具的解釋,但找不到任何東西。我結束了在IIS中使用HTTP重定向工具。

  1. 選擇你的網站
  2. 單擊HTTP在IIS部分重定向(確保角色服務安裝)
  3. 檢查「將請求重定向到此目標」
  4. 輸入要轉接。在你的情況「wwww.mysite.com/menu_1/MainScreen.aspx」
  5. 在重定向行爲,我發現我必須檢查「只有重定向到這個目錄中的內容請求(不是子目錄),否則它會進入一個循環見你的作品

希望這有助於

+0

此解決方案存在問題。如果設置爲將http:// server /'重定向/重寫爲'http:// server/Folder /',則訪問'http:// server/Folder'(注意不會有結尾斜槓)將被重定向到http:/ /服務器/文件夾/文件夾「,這可能會返回一個404。 – arid1

+0

自從我開始工作已經有一段時間了,但我似乎記得發生在我身上和我的第5步的原因。你有檢查嗎? – Jarrod

+1

我真的不記得了,但我相信如此。請注意,在我上面的例子中,IIS將/ Folder視爲一個文件而不是一個目錄,所以它重定向到子目錄,並且不會被「(不包括子目錄)」排除。 – arid1

32

我想,這可能沒有IIS URL重寫模塊來完成<httpRedirect>支持通配符,所以你可以用這種方式進行配置:。

<system.webServer> 
    <httpRedirect enabled="true"> 
     <add wildcard="/" destination="/menu_1/MainScreen.aspx" /> 
    </httpRedirect> 
    </system.webServer> 

請注意,您需要有在IIS上啓用「HTTP重定向」功能 - 請參閱HTTP Redirects

+0

這工作完美。 – Nick