mod_substitute + mod_filter
環境
OS:Windows Server
Apache:2.4
mod_substitute
概要
mod_substitute
は、 response bodyに対して正規表現と固定文字列の両方の置換を実行するためのメカニズムを提供します。
用途
例えば、HTMLに記載されている内容を、HTMLの書き換えなしにApache側で書き換え(置換)可能です。
これにより、プロキシされたHTMLも書き換えて利用できます。
使い方
単純な例:
Substitute s/変換したい文字列/変換後の文字列/i n f q
※コメントありがとうございます。n:正規表現と記載してしまっておりました。正しくは正規表現として扱わないです。
mod_filter
概要
このモジュールは、出力コンテンツフィルタのスマートで状況依存の設定を可能にします。たとえば、コンテンツタイプが事前にわかっていない場合でも(たとえばプロキシで)、Apacheは異なるフィルタを介して異なるコンテンツタイプを処理するように設定できます。
用途
AddOutputFilterByTypeが非推奨となっているらしく、こちらに切替えて実装する必要がある。
実際の記述
<Location "/hoge/"> FilterDeclare MYFILTER FilterProvider MYFILTER SUBSTITUTE "%{Content_Type} = 'text/html'" FilterChain MYFILTER Substitute "s/text.html/test.html/n" </Location>
何をしているのか
- FilterDeclare ディレクティブでMYFILTER変数を宣言
- FilterProvider ディレクティブで使うフィルター、今回はSUBSTITUTEを呼び出します。
- FilterChain ディレクティブで宣言されたフィルターから実際のフィルターチェーンが構成されます。
- Substituteのルールとしては、レスポンスの「%{Content_Type} = 'text/html'」 text.html部分 を全て test.html に変更する