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>

上記は2つの理由で機能していません。まず、.html拡張子は再マッピングされません。次に、.aspx拡張子は、書き換えられるのではなく、再マッピングされます。

.HTML拡張子が.NETによって無視されているのではないかと思ったので、StaticFileHandlerを追加しようとしましたが、実際にはそのハンドラーはすでに存在していました。

共有ホスティングにあるため、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 に答える