debianのapache2でmod_actionsをつかう
http://httpd.apache.org/docs/2.0/ja/mod/mod_actions.html
をみるとファイルタイプで動作しているものしか例示されていないが以前の自分の実験によるとそれ以外でも動く模様
http://d.hatena.ne.jp/n9d/20030508/1142572938
mod_actionsを利用可能にする
# cd /etc/apache2/mods-enabled # ln -s ../mods-available/actions.load . # apache2ctl restart
アクション用のCGIを準備する
$ cat > actions.cgi #!/usr/bin/ruby require 'cgi' a=CGI.new puts "content-type: text/plain\n\n" puts "path_info is '#{a.path_info}'" puts "path_translated is '#{a.path_translated}'" puts "query_string is '#{a.query_string}'" $ chmod +x actions.cgi $ wget -q -O - http://localhost/~$USER/actions.cgi?b=1 path_info is '' path_translated is '' query_string is 'b=1'
.htaccessを準備する
アクション名はサーバ名をのぞいたパスにする
$ mkdir actions_test/ $ cat actions_test/.htaccess Action actionstest /~a/actions.cgi SetHandler actionstest
実験
「?a=1」タイプのアクセスは大丈夫なのだがそのままディレクトリを記述する方法だとダメだ。
$ wget -q -O - http://localhost/~$USER/actions_test path_info is '/~a/actions_test/' path_translated is '/home/a/public_html/actions_test/' query_string is '' $ wget -q -O - http://localhost/~$USER/actions_test?a=1 path_info is '/~a/actions_test/' path_translated is '/home/a/public_html/actions_test/' query_string is 'a=1'
ここまでは大丈夫なのだが
http://localhost/~$USER/actions_test/aaaa
このタイプのアクセスでは404が出てしまう。
自分の記憶によるとapache2から動作が変わったようなきがする。
このタイプのURLを使うならrewriteのほうがきれいだな。
$ mkdir rewrite_test/ $ cat rewrite_test/.htaccess RewriteEngine on RewriteRule (.*)$ /~a/actions.cgi?a=$1 $ wget -q -O - http://localhost/~$USER/rewrite_test/aaa path_info is '' path_translated is '' query_string is 'a=aaa'