如何在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>

如何在asp mvc中重写url

解决方案:

<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>