0

クライアント キャッシュに関係なくリロードを強制するために、埋め込まれていないリソース (スクリプトなど) のバージョン管理に関する 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 に保持されます)。

4

1 に答える 1