我的托管计划使用的 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
至少可以继续使用,我想我可以没有波浪号。