トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

apache:mod_ext_filterでコンテンツ書き換え

Last-modified: 2013-08-24 (土) 02:14:21 (3898d)
Top / apache:mod_ext_filterでコンテンツ書き換え

apache:mod_ext_filterでコンテンツ書き換え

画面に表示されるURLのリンクを試験用に書き換えたいけど、アプリを直したりデータを書き換えたりはしたくない。

そんな時はmod_ext_filterでコンテンツを書き換えることで対応できるかもしれません。

apacheの設定内容

httpd.conf若しくはhttpd.confでロードされる設定ファイルに以下の内容を記述します。

まず、モジュールのロード

LoadModule ext_filter_module modules/mod_ext_filter.so

次に、書き換えfilterを定義します。

ExtFilterDefine fixtext mode=output intype=text/html cmd="/bin/sed -e s/www\.example\.com/www\.test1\.example\.com/g"

この場合、apacheが返却するコンテンツの内容の中が

  • コンテンツタイプが「text/html」の場合
  • sedに食わせて、「www.example.com」という文字列を「www.test1.example.com」に置換

するfilterを定義してます。

次に、実際に適用する場所を定義します。

<Location />
# core directive to cause the fixtext filter to
# be run on output
SetOutputFilter fixtext
</Location>

この場合、/配下のロケーションに適用されます。

まあ、mod_ext_filterで置換するわけじゃなくて、sedで置換しているだけなんですけどね。

ちなみに、cmdには標準入力にデータが流し込まれて、cmdの標準出力がクライアントへのレスポンスとなります。

参考サイト