12

ローカル開発テストでwww.somedomain.com/XXXは、(X はパス) へのすべての要求をキャッチし、に送信する必要がありますlocalhost/somevdir/XXX

これを HOSTS ファイル (c:\windows\system32\drivers\etc) に追加しました。

127.0.0.1   www.mydomain.com

次に、IIS8 (Windows 8) で、ホスト www.mydomain.com の「既定の Web サイト」にバインディングを追加しました。これで問題なく動作し、www.mydomain.com/test.html を参照して、テスト用の html ページを表示できるようになりました。私の仮想ディレクトリは、デフォルトの Web サイト内にあります。次に、最後のビットとして、URL 書き換え URL を Web サイトに追加します。

<rewrite>
    <rules>
        <rule name="mydomain.com" stopProcessing="true">
            <match url="^www.mydomain.com/(.*)" />
            <action type="Rewrite" url="localhost/MyVDir/{R:1}" logRewrittenUrl="true" />
        </rule>
    </rules>
</rewrite>

しかし - それはうまくいきません。404 が表示されるので、一致が起こらないように見えます。私はリダイレクトと書き換えを試みましたが、正規表現の ^ と他のいくつかの正規表現の微調整なしで試しました。誰かが私が間違ったことを説明できますか?

4

2 に答える 2

23

私は以下がうまくいくはずだと思います:

<rule name="mydomain.com" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^(mydomain\.com|www\.mydomain\.com)$" />
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    </conditions>
    <action type="Redirect" url="http://localhost/MyVDir/{R:1}" redirectType="Temporary" />
</rule>

任意の URL での一致により、条件が確実にチェックされます。HTTP_HOST サーバー変数は、要求されたホスト名をチェックする最も信頼できる方法のようです。REQUEST_FILENAME 入力条件を削除することもできますが、静的ファイルが常に提供されることを確認するための非常に優れた健全性チェックとして機能します。

于 2013-06-12T12:56:47.300 に答える