AN HTTPD ゲストブック/コメント集(2004年10月27日16:30)


いと gfh05223@nifty.com 2005/02/03 23:33

福田さん

その不具合は私が過去に pukiwikiを試したときにも遭遇しています。
 http://homepage1.nifty.com/yito/namazu/gbook/20030210.0848.html
確かに、PHP や Rubyなどのスクリプトも使うときに困る場合がありますね。

私自身は特に困っていたわけではないのでそのうち中田さんが対応されるから
いいだろうと思っていました。

必ずファイル名がつくようにスクリプト自体を書き換えれば解決しますが、
誰でもできるというわけにはいかないでしょうし、バージョンアップの度に
変更しないといけないというのも面倒です。

今回何とかならないものかと考えてみて、苦肉の策ですが一つ回避策を
思いつきました。

インデックスリストには、index.html,index.cgi の続きに index.phpや
index.rbなど自分が必要なものを書き並べます。そうすると必ず index.cgiに
アクセスが来るので、index.cgiファイルを作成し、そこから index.phpや
index.rb などにリダイレクトしてやろうという作戦です。

そのようなスクリプトがどこかにないか検索してみると、method が GETなら
簡単に見つかるのですが POSTが可能で使えそうなものがなかなか見つからず、
ようやく探し当てたのが以下のスクリプトです。
 http://www.perlmonks.org/index.pl?node_id=160927

コピーするときは、5箇所くらい折りかえっているところがある(1桁目が赤字の +)
ので注意することと、このままではやはり POSTがうまく動作しなかったので、
(空行を含めずに数えて)下から13行目の

$location="http://$ENV{HTTP_HOST}"."$ENV{SCRIPT_NAME}/$location";

if ($method eq 'GET') {
$location="http://$ENV{HTTP_HOST}"."$ENV{SCRIPT_NAME}/$location";
}

と書き換えます(確信はありません)。そしてこのスクリプトのファイル名を
index.cgiとし、index.phpや index.rb があるのと同じフォルダ下に置きます。

スクリプトに応じて設定変更が必要な箇所は 16行目(空行含めず)の
 my $target_base_address=q[http://www.mysite.suffix]; # site target
一箇所です。ここにリダイレクト先の URLを書きます。pukiwikiなら
 my $target_base_address=q[http://www.example.com/pukiwiki/index.php]; # site target
のように、tDiaryなら
 my $target_base_address=q[http://www.example.com/tdiary/index.rb]; # site target
といった感じです(インターネットからアクセス可能なホスト名にすることと、
ここのファイル名 index.* は省略不可)。

pukiwikiと tDiaryで試してみて、一応動作することを確認しましたが、保証の
限りではありません。もし興味があって試された方はどのスクリプトがどういう
結果であったかを教えてください。ただし、正常動作しないときは諦めてもらうしか
ないかも。もし他に使えるスクリプトをご存知の方は教えてください。


福田 健 fkd@is.seisen-u.ac.jp 2005/01/31 09:53

お世話になります。以下、障害再現性のご報告です。
昨年、中田様が2004/11/01 21:09でご回答されました「POST の actionでデフォルトインデックスを探していない」件は、当方の環境(Win2k/Server + 1.42n)でも再現性があります。POSTを使うperlベースの掲示板とblosxomとtDiaryを同時に動かそうとして発症しました。デフォルトインデックスの指定をしたところ、最初(最左欄)と2番目(左から2番目)の指定までは見てくれるのですが、3番目以後は見てくれないようです。


中田昭雄 nakata@st.rim.or.jp 2004/11/01 21:09

rousho さん、
なるほど、そうなってしまうようです。
"index.html, index.rb" としておけば index.rb が起動すると思いますが、そうすると今度は index.cgi や index.php が同じエラーになってしまいそうです。
確認の上、できるだけ早く直します。


rousho 2004/11/01 10:06

中田さん、
デフォルトインデックスは"index.html, index.cgi, index.php, index.rb"としています。
で、POSTの時にindex.rbが起動するのを期待していたのですが、index.cgiが見つからないというエラーになりました。


中田昭雄 nakata@st.rim.or.jp 2004/10/30 07:17

rousho さん、
POSTの場合、デフォルトインデックスのファイルの中にCGIなどの実行可能なものがなければいけません。
「index.cgi固定」というのは、他の名前の xxx.cgi ではだめという意味ですか?


rousho 2004/10/27 16:30

POSTの時にaction属性にフォルダまでしか指定しない場合、デフォルトインデックスのファイルを探してくれることを期待していますが、index.cgi固定になっているようです。
TODOに以下の記述があるのですが、1.34で対応済みということでしょうか?
(34) POST でもデフォルトインデックスを探す