如何在asp mvc中重写url
本文关键字:重写 url mvc asp | 更新日期: 2023-09-27 18:37:00
我使用 iis 8, mvc 5, c#.
我希望网址像 subdomain.site.ru/path/to/file 通过内部重定向转到./subdomain/path/to/file(如果文件存在)。我想要 url 就像 subdomain.site.ru/Controller/Action 转到我的控制器的操作一样。
首先,我在 IIS 管理器中将所有子域绑定到我的站点。接下来我应该怎么做?我发现这篇文章 http://msdn.microsoft.com/en-us/library/ms972974.aspx,但我认为这应该是更简单的方法。我应该使用路线吗?MapRoute() 或 URLRewriter 或者我需要扩展 BaseModuleRewriter?
UPD
这不是一个重复的问题,因为另外我想重写 url,然后检查文件是否存在
UPD 2
我已经安装了网址重写,现在我有这样的东西:
<rule name="Subdomain" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="Subdomain{REQUEST_URI}" matchType="IsFile" />
<add input="{HTTP_HOST}" pattern="^subdomain.site.ru$" />
</conditions>
<action type="Rewrite" url="http://site.ru/Subdomain/{R:0}" />
</rule>
它不起作用 - 错误 404。1)请帮助我,出了什么问题?2)以及如何将"子域"更改为任何子域?3) 有没有按 url 重写配置行调试的方法?
UPD 3
溶液:
<rule name="Sub" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{DOCUMENT_ROOT}/Sub{PATH_INFO}" matchType="IsFile" />
<add input="{HTTP_HOST}" pattern="^sub.site.ru$" />
</conditions>
<action type="Rewrite" url="/Sub{PATH_INFO}" />
</rule>
解决方案:
<rule name="Sub" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{DOCUMENT_ROOT}/Sub{PATH_INFO}" matchType="IsFile" />
<add input="{HTTP_HOST}" pattern="^sub.site.ru$" />
</conditions>
<action type="Rewrite" url="/Sub{PATH_INFO}" />
</rule>