IIS7 URLは、アウトバウンドルールを書き換えます
-
25-10-2019 - |
質問
何らかの理由でこれらの書き直しルールの周りに頭をつかむことができないようで、皆さんが助けてくれることを望んでいました。私が欲しいのは、リンク、IMG、スクリプト、および入力タグのパスを書き換えるアウトバウンドルールです。
これを変更したい: http://www.mysite.com/appname/css/file.css
これに: http://cdn.mysite.com/css/file.css
したがって、基本的にホスト名を交換して、URLからアプリ名を削除する必要があります。 *.aspxファイルの事前条件フィルターはすでに設定されていますが、残りはギリシャ語のように思えます。
明確にするために編集します
上記のURLのAppNameは、IISのアプリケーションです。これは、たまたま使用されているAppNameのプレースホルダーです。現在のセットアップを備えた50を超える異なるアプリのいずれかである可能性があります。そこになります いつも AppNameになります。おそらく、それはルールをさらに簡単にするでしょう。
ホスト名、この場合はwww.mysite.comも、サブドメインの点でわずかに異なる場合があります。また、www1.mysite.com、www2などである可能性があります。また、SSLを維持する必要があることに気付きました。
だから、それがそれになると、私は本当にURLを取得し、アプリネームを除いて、使用されたプロトコルを尊重しながら、新しいドメインに追加する必要があると思います。
オリジナルURL:http(s):// {host}/{appname}/{url}
出力:http(s)://cdn.mysite.com/ {url}
解決
私はあなたのウェブサイトのドメインが常に同じであると仮定します、そして、このルールは次のことを行うべきです:
<rule name="CdnRule" preCondition="OnlyAspx" >
<match filterByTags="Img, Input, Link, Script" pattern="^(.+)://.+?\.(.+?)/.+?/(.*)" />
<action type="Rewrite" value="{R:1}://cdn.{R:2}/{R:3}" />
</rule>
<preConditions>
<preCondition name="OnlyAspx">
<add input="{PATH_INFO}" pattern=".+\.aspx$" />
</preCondition>
</preConditions>
編集:明確な質問に従って変更されました
サブドメイン(www、www2、...)は常にそこにあり、ターゲットURLで無視する必要があると思います。