簡體   English   中英

IIS URL重寫和MVC

[英]IIS URL Rewriting and MVC

我的托管計划可使用的Web應用程序數量有限,但子域數量不受限制。 我計划通過使用IIS重寫來利用這些子域,如下所示:

<rule name="Home Rewrite" enabled="true">
  <match url="^(.*)$" />
    <conditions>
      <add input="{HTTP_HOST}" pattern="^home\.mydomain\.com$" />
    </conditions>
  <action type="Rewrite" url="home/{R:1}" />
</rule>

這在大多數情況下都可以正常工作,我可以轉到http://home.mydomain.com ,它將帶我到預期的http://www.mydomain.com/home

我正在使用Web Deploy發布,並且我相信主機是IIS7。

問題是我想利用@Html.ActionLink ,但是在查看源代碼時,它解析為包括虛擬目錄。

所以最終我得到的是一個當我轉到原始地址時可以正常運行的網站:

http://www.mydomain.com/home/application

並在重定向地址加載但無法正常運行的站點:

http://home.mydomain.com/application

頁面源中生成的URL相對於原始地址指向:

/home/application/Account/Login

這適用於指向其他頁面/路由,包的鏈接,基本上適用於使用~/@Html.ActionLink任何地方。

我該如何解決? 我希望至少繼續使用@Html.ActionLink ,我認為我可以沒有波浪號。

我終於找到了解決方案!

https://support.gearhost.com/entries/23689272-URL-Rewrite-Subdomain

我的web.config重寫規則需要額外的一行:

<rule name="Home Rewrite" enabled="true">
  <match url="^(.*)$" />
    <conditions>
      <add input="{HTTP_HOST}" pattern="^home\.mydomain\.com$" />
      <add input="{PATH_INFO}" pattern="^/home/" negate="true" /> <!-- This one! -->
    </conditions>
  <action type="Rewrite" url="home/{R:1}" />
</rule>

現在每個人都很高興:)

您可以編寫自定義的HtmlHelper因此可以使用MyActionLink代替使用ActionLink ,它可以生成所需的url。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM