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