9

次のシナリオの書き換えルールを作成しようとしています。

ユーザーがこの画像を読み込もうとしました:

domain.com/images/folder/picture.jpg

代わりに、ロードする必要があります。

cdn.domain.com/images/folder/picture.jpg.

これが私が持っているものが機能していないものです:

<rule name="CDN rewrite for Images">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="domain.com" />
        <add input="{REQUEST_URI}" pattern="^/images/folder/(.*)$" />
    </conditions>
    <action type="Rewrite" url="cdn.domain.com/images/folder/{C:1}" />
</rule>

更新: 追加情報を追加します。ほとんどの画像はJoomlaから提供されているため、ドメインのルートはdomain.comのようなものですが、ほとんどの画像はsrc = "/ images / folder/picture.jpg"で入力されます。これが書き換えにどのように影響するかはよくわかりません。しかし、以下のcheesemacflyの回答のオプションはどれも機能していません...

UPDATE2:cheesemacfly は私の特定の状況では私を助けることができませんでしたが、彼がチャットで私を助けようと試みたので、私は彼に賞金を与え、彼の答えを受け入れられたものとしてマークしました。うまくいけば、彼の答えがIISでの書き換えに役立つことを願っています。

4

2 に答える 2

10

編集:

URLを外部のWebサイトに書き換えることができるようにするには(リダイレクトするだけでなく)、Application Request Routingモジュールをインストールし、プロキシモードを有効にする必要があります。

そうするために:

  1. モジュールをダウンロードしてインストールします
  2. IIS管理コンソールを開きます(inetmgr
  3. サーバーノードを選択します
  4. ダブルクリックApplication Request Routing CacheARR
  5. ペイン(画面の右側)をServer Proxy SettingsクリックしますActions
  6. チェックボックスEnable proxyをオンにして、をクリックしますApply プロキシー

2番目のステップは、ルールを設定することです。

パスに基づいて書き換えを行う場合は、次のコードを使用します。

<rewrite>
  <rules>
    <rule name="Rewrite to cdn domain">
      <match url="^images/folder/(.+)$" />
      <action type="Rewrite" url="http://cdn.domain.com/images/folder/{R:1}" />
    </rule>
   </rules>
</rewrite>

または、2番目のWebサイトで同じフォルダアーキテクチャを維持している場合は、次のように簡略化できます。

<rewrite>
  <rules>
    <rule name="Rewrite to cdn domain">
      <match url="^images/folder/(.+)$" />
      <action type="Rewrite" url="http://cdn.domain.com/{R:0}" />
    </rule>
   </rules>
</rewrite>

特定の拡張子で終わるファイル(たとえば画像)のみをキャッチしたい場合:

<rewrite>
  <rules>
    <rule name="Forward to cdn domain">
      <match url="^images/folder/.+\.(?:jpg|bmp|gif)$" />
      <action type="Rewrite" url="http://cdn.domain.com/{R:0}" />
    </rule>
  </rules>
</rewrite>

http://www.iis.net/learn/extensions/url-rewrite-module/iis-url-rewriting-and-aspnet-routing(セクション「どのオプションを使用する必要がありますか?」)を参照してください。

ヒント:

パターンをテストする最良の方法は、IISテストパターンツールを使用することです。

Webサイトのルートで->URL書き換え->空白のルールを作成->テストパターンをクリックします。 パターンテスト

期待した結果が得られない場合は、FailedRequestTracingツールを使用してリライトをデバッグできます。

于 2013-01-18T20:03:11.843 に答える
1

注:ルールを書き換えではなくリダイレ​​クトに変更すると、問題が修正されます。理想的にはリダイレクトにしたいと思いますが、私はリライトを機能させるために何時間も費やしてきましたが、これまでのところ解決策はありません。

<rule name="Rewrite to images.cdn.com" enabled="true" stopProcessing="true">
<match url="images/(.+)$" ignoreCase="true" />
<action type="Redirect" url="http://images.cdn.com/{R:1}" />
</rule>
于 2013-01-31T05:15:22.057 に答える