1

这可能是重复的,但我的 Google-foo 已关闭或其他什么,因为我找不到这个简单问题的答案。

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

我添加了 URL 映射。

<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 中添加一些内容以使它们重定向。

4

1 回答 1

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>  
于 2013-02-14T21:19:28.200 回答