[Apache] Apacheモジュールで既存のモジュールの処理をたまに横取りをしたい
Apacheモジュール プログラミングガイド (Advanced Server‐side programmingシリーズ)を読んで、Apacheモジュールを作っているのですがちょっと悩み中。
mod_testというモジュールを作っています。
mod_testは、コンテンツハンドラ(ap_invoke_handler)を持ち、コンテンツを返します。
ただし必ずコンテンツを返せるわけでなくて、ある条件が成立する場合は、mod_rewriteのコンテンツハンドラに処理を任せる。という動きを実現したいです。
その方法を探しているのですがなかなか見つからず困っています。もし情報お持ちの方がいらしたらぜひ教えてください。
試した事
- mod_testのap_find_typesフェーズで、「ある条件」を判定し、r->handler を"redirect-handler"(mod_rewriteのコンテンツハンドラ名)にしてみた。⇒×
- mod_testのコンテンツハンドラ内で「ある条件」を判定し、成立していれば return DECLINEDして、別のコンテンツハンドラに任せてみた。⇒×
Apacheモジュール プログラミングガイド (Advanced Server‐side programmingシリーズ)によると、起動するコンテンツハンドラを切り替えるには、ap_find_typesフェーズで、r->handlerを書き換えればよさそうなのですが、これは同一モジュール内での話なのかなぁ。
あと考えられるのはAddModuleの逆順にハンドラが呼ばれるあたりか。
環境は以下のとおりです
Apache 1.3
httpd.conf
RewriteEngine on RewriteLog logs/rewrite_log RewriteLogLevel 0 RewriteRule ^/(.*)$ http://monaos.org/$1 [P,L] <Location /> SetHandler mod_test # 通常はこちらで処理し、だめならRewriteされたURLに行きたい。 </Location>
Apacheモジュール プログラミングガイド (Advanced Server‐side programmingシリーズ)
- 作者: 小山浩之
- 出版社/メーカー: 技術評論社
- 発売日: 2003/08/01
- メディア: 単行本
- 購入: 1人 クリック: 81回
- この商品を含むブログ (26件) を見る