2013-01-10 14 views
7

次のシナリオで書き換えルールを書き込もうとしています。サブフォルダをweb.configのサブドメインに書き換えます。

ユーザーがこの絵をロードしよう:

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の答えの選択肢のどれもが、...

アップデート2機能していない:をcheesemacflyは私の特定の状況で私を助けることができませんでしたが、私は彼に恵みを受賞し、彼ので受け入れられて一人として彼の答えをマーク私はチャットで私を助けようと努力しました。うまくいけば彼の答えは誰かがIIS上で書き直すのを助けるでしょう。

+0

パターン '^/images/stories/catalog /(.*)$'は、あなたのエントリ' domain.com/images/folder/picture.jpg'と一致しません。それはタイプミスですか?あなたがここでやりたいことは 'domain.com/images/folder/*'のようなリクエストを 'cdn.domain.com/images/folder/*'にリダイレクトすることです。 – cheesemacfly

+0

これはタイプミスでした。上記を訂正。そして、はい、あなたは書き直しについて正しいです。私は起源を使用しています - 私のcdnでプル – GregD

+0

申し訳ありませんもっとあなたを助けることができなかった...私はあなたがそれを見つけたら、解決策を見たいと思います! – cheesemacfly

答えて

5

EDIT:

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

です:

  1. Download and install the module
  2. あなたのIIS管理コンソールを開きます(inetmgr
  3. は、お使いのサーバーノードを選択し
  4. Application Request Routing Cache
  5. をダブルクリック:Server Proxy SettingsARR
  6. クリックでActionsペイン(画面の右側)
  7. ボックスEnable proxyをチェックして、第2のステップは、あなたのルールの設定についてですApply proxy

をクリックしてください。

<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> 

それとも、第二のウェブサイト上の同じフォルダ構造を維持する場合は、次のように簡略化することができます:

<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(セクション「どのオプションを使用する必要がありますか?「)

TIP:

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

あなたのウェブサイトのルートに - > URL書き換え - >作成します。空白のルール - >テストパターンをクリックしてください: Pattern test

あなたが期待される結果を取得しない場合、あなたはFailed Request Tracing tool

を使用してリライトをデバッグすることができます0
+0

あなたのバリエーションのどれも働いていません。私がそれらのいずれかを使用するとき、それは写真を "壊す"。ソースコードを見ると、これはJoomlaのものなので、画像にはsrc = "/ images/folder/picture.jpg"などがあります。 – GregD

+0

あなたは私を少し失ってしまいました... IIS7でホストされている画像を使ってJoomlaのウェブサイトを持っていますか?このJoomlaのウェブサイトはどこにホストされていますか? – cheesemacfly

+0

IIS 7でJoomlaをインストールする – GregD

0

注:ルールを書き換えの代わりにリダイレクトに変更すると、問題が修正されます。理想的にはリダイレクトにしたいと思っていますが、私は何時間も書き直しを実行しようと努力していますが、まだ解決策はありません。

<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> 
関連する問題