如何将不存在的.html文件重定向到mvc3路由?

时间:2013-02-14 18:07:37

标签: seo iis-7.5 url-routing

这可能是重复的,但是我的Google-foo已经关闭了,因为我无法找到这个简单问题的答案。

我已经将旧网站移动到IIS7.5上的MVC3,我需要将一些旧的.html扩展URL重定向到新的MVC控制器操作。

我添加了网址映射。

<urlMappings>
    <!-- Doesn't work -->
    <add url="~/OldUrl.html" mappedUrl="~/NewController"/> 
    <!-- Works but is rewrite instead of redirect -->
    <add url="~/OldUrl.aspx" mappedUrl="~/NewController"/> 
</urlMappings>

以上原因无效。首先,.html扩展名没有重新映射,其次,.aspx扩展名被重新映射而不是重写。

我尝试添加StaticFileHandler,因为我认为.NET可能忽略了.HTML扩展名,但实际上处理程序已经存在了。

我无法访问IIS管理工具,因为它位于共享主机中,但我应该只需在web.config中添加一些内容即可重定向。

1 个答案:

答案 0 :(得分:0)

终于明白了:

<system.webServer>
  <!-- The RewriteModule may need to be added if it isn't 
       already included in machine.config or application.config
  <modules>
      <add name="RewriteModule" />
  </modules>
  -->
  <rewrite>
      <rules>
          <rule name="Redirect1">
              <match url="^OldUrl.html$" />
              <action type="Redirect" 
                      url="/NewController" 
                      redirectType="Permanent" />
          </rule>
          <rule name="Redirect2">
              <match url="^OldUrl.aspx$" />
              <action type="Redirect" 
                      url="/NewController" 
                      redirectType="Permanent" />
          </rule>
      </rules>
  </rewrite>
</system.webServer>