URL Rewriteを使用してURLの一部を変更する

URL Rewriteを使用してURLの一部を変更する

開発者マシン上の既存の URL を書き換えるために、IIS 8.0 の URL 書き換えを使用しようとしています。 その理由は、既存の (古い) コードを変更したくないからです。

私が実現しようとしているのは、応答ストリーム内の次のコードを変更することです。

<a href="http://www.foo.com/path/page.asp?a=1">Foo Page</a>

の中へ:

<a href="http://www.foo.localhost/path/page.asp?a=1">Foo Page</a>

しかし、試してみると、次のようになります。

<a href="foo.localhost">Foo Page</a>

皆さんご存知のとおり、これはあまり満足のいく結果ではありません。

それで、私がやろうとしていることを実現するために、この書き換えを適切に行うにはどうすればよいでしょうか?

アプリケーション変数などを使用してこれを行うより良い方法があることはわかっていますが、これは古いソリューションであり、アプリケーション自体にあまり手を加えたくありません。変更は最小限に抑えたいと思います。少なくとも最初は。

私が試したルールは次のようになります:

<system.webServer>
  <rewrite>
    <outboundRules>
      <rule name="foo.com" enabled="true">
        <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="foo.com" />
        <action type="Rewrite" value="foo.localhost" />
      </rule>
    </outboundRules>
  </rewrite>
</system.webServer>

この問題に対する解決策として正規表現が適しているでしょうか?

答え1

この質問に対する回答は別のフォーラムで受けました。記録のために、その回答を要約します。

正しい書き直しは次のようになります。

<system.webServer>
  <rewrite>
    <outboundRules>
      <rule name="foo.com" enabled="true">
        <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^(.*)foo.com(.*)$" />
        <action type="Rewrite" value="{R:1}foo.localhost{R:2}" />
      </rule>
    </outboundRules>
  </rewrite>
</system.webServer>

関連情報