mod_substitute(Apache 2.2)

HTTPなアプリケーションのデバッグのために出力の一部を書き換えたいということがある。アプリケーションを書き換えたくない状況ではApache HTTPサーバのフィルタで対応できそうだ。そういうわけで、何か適当なモジュールはないだろうか検索してみたところ、Apache HTTPサーバのバージョン2.2には標準でmod_substituteというモジュールが用意されていた。

レスポンスボディを正規表現で書き換えるもので、設定の都合上「/」をうまく扱えないようなのがいまいちだが、それでもとりあえずしのぐのには使えそうだ。こんな感じで使う。

AddOutputFilterByType SUBSTITUTE text/html
Substitute s/www\.example\.jp/www.debug.example.jp/i

追記(2008-02-14): trackbackをいただいた通り、mod_substituteが「/」をうまく扱えないというのは私の間違いで、sedと同じようにちゃんとデリミタを変えられるとのこと。確認不足でした。ありがとうございます。