1

IISに次の要求をリダイレクトする方法はありますか: 個別に明示的にマップする必要なしに、imgディレクトリ内のすべてのイメージに対してhttp://mysite/report1/img/logo.pnghttp://mysite/myapplication/report1/images/logo.png

追加要件-「report1」仮想ディレクトリにマップされたドライブに数千のレポートがあります-それぞれに独自の「img」ディレクトリがあります-したがって、IISマネージャーを使用してこれらのディレクトリを個別にマップする合理的な方法もありません。

IISサーバーのweb.configファイルにワイルドカード(またはその他の)HttpRedirectを追加して、すべてのレポートのすべての画像を正しくマップする方法があるかどうかを調べています。私は試した:

<add wildcard="*res/img/" destination="/reporter/content/images/reportimages" />

しかし、それは効果がないようでした。

編集:さらにいくつかの調査では、URL書き換えモジュールを使用すると機能する可能性があることが示されています...しかし、これまでのところ、機能するようにはなりません。

私のルールは次のようになります(web.config内):

<rules>
    <rule name="Redirect rule1 for ImageRedirect">
        <match url=".*" />
            <conditions>
                <add input="{ImageRedirect:{REQUEST_URI}}" matchType="Pattern" pattern="/res/img/(.+)" ignoreCase="true" negate="false" />
            </conditions>
            <action type="Redirect" url="{HTTP_HOST}/reporter/content/reporterimages/{C:1}" appendQueryString="false" />
     </rule>
</rules>
4

1 に答える 1

2

URL書き換えモジュールを使用して、正しい方向に進んでいました。
あなたの場合の最も単純なルールは次のとおりです。

<rule name="Rewrite images" stopProcessing="true">
  <match url="^/report1/img/(.+)$" />
  <action type="Rewrite" url="/myapplication/report1/images/{R:1}" />
</rule>

要求されたURLが一致するかどうかをチェックし、一致する場合は^/report1/img/(.+)$、新しいフォルダーへの再書き込みをトリガーします。

代わりにリダイレクトを使用する場合:

<rule name="Redirect images" stopProcessing="true">
  <match url="^/report1/img/(.+)$" />
  <action type="Redirect" url="/myapplication/report1/images/{R:1}" />
</rule>

(指定しない場合、デフォルトではリダイレクトは永続的です(301))

于 2013-03-06T15:27:44.703 に答える