今日はRewriteMapについてお勉強。
よくわからないので、プログラムを使うprgについてテスト。勿論、プログラムはPHPで書く。
RewriteMapは.htaccessに書けないようなので、vhostに書いてみる。
RewriteEngine On RewriteLog logs/rewrite.log RewriteLogLevel 9 RewriteMap test prg:/path/to/map.php RewriteRule ^/rewritemap/(.*)$ ${test:$1|no_variants} [R,L]
ログは確認のために一応設定。最初、RewriteRuleは.htaccessに書いていたんだけど、上手く動かなかったのでこっちに残ったまま。
で、map.phpは以下。
#!/opt/local/bin/php <? while(!feof(STDIN)) { echo "http://pmg4.local/proxy.php?q=" . trim(fgets(STDIN)) . "\n"; } ?>
RewriteMapの動作確認なので単純なもの。標準入力を受け取って吐き出すだけ。設定によっては(バッファリングしないように)"output_buffering"あたりをいじるのかな?
RewirteRuleを.htaccess書きたくなったので、rewritemap2というディレクトリを作って、そこに.htaccessを置いてみた。
RewriteEngine On RewriteRule ^(.*)$ ${test:$1|map2}
ちなみに、map経由で吐き出すproxy.phpってのはGET変数をダンプして表示するだけ。
<?php echo "<pre>"; var_dump($_GET); echo "</pre>"; ?>
今回は『使ってみる』程度で終了。RewriteLockについてはまた今度(必要になったらテスト)。置換のフィルタにプログラムが使える(?)らしき事がテスト出来たので満足。
関係ないけど、GeSHiってapacheディレクティブ(?)も対応してるんだね。

