[英]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.