クライアント キャッシュに関係なくリロードを強制するために、埋め込まれていないリソース (スクリプトなど) のバージョン管理に関する Web アプリケーションの問題を解決しています。
このソリューションの一部には、IIS Url Rewrite を使用してスクリプトの場所 ('src' で指定) を取得し、それを実際のリソースに書き換えることが含まれます。したがって、提供される Web ページは次のようになります。
<script type="text/javascript" src="../jsmenu/menu.js?ver=1.1"></script>
また
<script type="text/javascript" src="../jsmenu/menu-1_1.js"></script>
書き換えルールは、対応するクライアント要求を受け取り、それを次の要求に変換します。
"../jsmenu/menu.js"
Rewrite モジュールをインストールし、UI (web.config に表示される) を使用してルールを作成し、多数の IISreset を実行しましたが、何も起こらないようです。
ルールは次のとおりです。
<system.webServer>
<rewrite>
<rules>
<rule name="VersionScripts">
<match url="../jsmenu/menu_([0-9]+)_([0-9]+).js" />
<action type="Rewrite" url="../jsmenu/menu.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
URL は書き換えられず、スクリプトはロードされません (実際には「menu_1_1.js」と呼ばれていないため)。ログを見ると ( logRewrittenUrl = "true" の有無にかかわらず)、起動したことを示すものは何も表示されません。
私は何が欠けていますか?
相対パス情報が保持されるようにルールを書き直すことができればボーナス ポイント (ルールは src="../../jsmenu/menu_1_1.js" または src="../jsmenu/menu_1_1.js のどちらであっても機能します) " または何でも、そのパスは書き換えられた URL に保持されます)。