こんばんは。
WebサーバApacheでCGIを作成しています。
DocumentRootが初期設定/var/www/html/で、その下にindex.htmlを作成しました。
次にcgiのディレクトリが初期設定の/var/www/cgi-bin/で、その下にtest.cgiを作成しました。
そして、test.cgiのパーミッションを-rwxr-xr-xにしてからApacheを起動しました。
別マシンのブラウザからhttp://xxx.xxx.xxx.xxx/index.htmlでアクセスし、フォームのテキストボックスに「abc」と入力して送信ボタンを押しましたが、404エラーになってしまいます。
(アドレスバーには「http://xxx.xxx.xxx.xxx/test.cgi?NAME=abc」と表示)
ブラウザのアドレスバーに直接「http://xxx.xxx.xxx.xxx/cgi-bin/test.cgi?NAME=abc」とすると正常にアクセスできます。
ドキュメントルート配下にあるindex.htmlからドキュメントルート外にあるCGIのディレクトリ(ScriptAlias /cgi/bin/ "/var/www/cgi-bin/")を参照するにはどのようにしたらよいのでしょうか?
----------index.html----------------
<HTML>
<HEAD><TITLE>フォーム</TITLE></HEAD>
<BODY>
<FORM ACTION="../cgi-bin/test.cgi" METHOD="GET">名前
<INPUT TYPE="TEXT" NAME="NAME"><BR>
<INPUT TYPE="SUBMIT" VALUE="送信">
</FORM>
</BODY>
</HTML>
----------index.html----------------
----------test.cgi------------------
#!/usr/bin/perl
$str = $ENV{"QUERY_STRING"};
print << "EOF";
Content-type: text/html
<HTML>
<HEAD><TITLE>TESTCGI</TITLE></HEAD>
<BODY>$str</BODY>
</HTML>
EOF
----------test.cgi------------------
No.4
- 回答日時:
>
http://xxx.xxx.xxx.xxx/cgi-bin/test.cgiなので、ドキュメントル>ート配下のcgi-binとなってしまい、/var/www/html/cgi-bin/と解釈
>されるように思います。
>
>ドキュメントルート/var/www/html/
>CGIディレクトリ/var/www/cgi-bin/
書いてある内容を見ると、CGIディレクトリは、ドキュメントルート
配下ではありませんよね?
逆にドキュメントルート配下に置いているのであれば、上記に書いてい
るようなディレクトリに移動した方が良いと思います。
No.3ベストアンサー
- 回答日時:
ブラウザ・サーバーでのやりとりでのパスの話になるので、実際には/var/www/html/にファイルがあってもそれは関係ありません。
http://xxx.xxx.xxx.xxx/index.html
から見れば
http://xxx.xxx.xxx.xxx/cgi-bin/test.cgi
はindex.htmlが置いてあるのと同じルートにあるcgi-binの中なわけですから
ACTION="./cgi-bin/test.cgi"
でいいのです。
そう考えるとごく当然のことに見えますが、ディレクトリを基準に考えると違和感が生じます。
あくまでブラウザでの指定が肝心ということですね。
ありがとうございました。
No.2
- 回答日時:
><FORM ACTION="../cgi-bin/test.cgi" METHOD="GET">名前
<FORM ACTION="./cgi-bin/test.cgi" METHOD="GET">名前
で良いのでは?
この回答への補足
解決しました。試したと思っていましたが勘違いだったようです。
ところでなぜそれで実現できるのでしょうか?
http://xxx.xxx.xxx.xxx/cgi-bin/test.cgiなので、ドキュメントルート配下のcgi-binとなってしまい、/var/www/html/cgi-bin/と解釈されるように思います。
ドキュメントルート/var/www/html/
CGIディレクトリ/var/www/cgi-bin/
No.1
- 回答日時:
><FORM ACTION="../cgi-bin/test.cgi" METHOD="GET">名前
<FORM ACTION="/cgi-bin/test.cgi" METHOD="GET">名前
で良いのでは?
この回答への補足
解決しました。試したと思っていましたが勘違いだったようです。
ところでなぜそれで実現できるのでしょうか?
http://xxx.xxx.xxx.xxx/cgi-bin/test.cgiなので、ドキュメントルート配下のcgi-binとなってしまい、/var/www/html/cgi-bin/と解釈されるように思います。
ドキュメントルート/var/www/html/
CGIディレクトリ/var/www/cgi-bin/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
URLに~/cgi-bin/~を隠す方法
-
PyCharmでのCGIを使ったWebサー...
-
EXCELファイルに誰がアクセスし...
-
リダイレクト機能
-
ラジオボタンのグループ化
-
直リンク用バナーの作り方
-
midi・・・要はhpでbgm鳴...
-
《エクセルVBA》「他の人が該当...
-
LAN内に接続されているPCをリ...
-
ASPから既存のexcelブックを開...
-
SFTPなどは使わないホームペー...
-
CGIが読み書きするデータファイ...
-
ASP(IIS?)のエラーについて
-
CGIでの500エラー
-
CGIの設置が分かりません・・・
-
VBAを使用して、外部サーバのフ...
-
つぼ八 上新庄店の場所。
-
perlからJavascriptを起動
-
メールフォームのCGIでデータが...
-
cgiファイルを直接は見れなくす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLに~/cgi-bin/~を隠す方法
-
apache で /cgi-bin/にアクセス...
-
cgiでのアクセスカウンターの表...
-
cgiが動作しないのは?
-
CGIが動作しません。
-
初心者のCGI設置方法
-
FC2にwebPatio設置の方法
-
PyCharmでのCGIを使ったWebサー...
-
相対パスか絶対パス??
-
jsRSSの設置方法について【NEW】
-
cgi-binにアクセスするとforbid...
-
CGIゲームの設置でエラーがでます
-
perlを使用したcgiでの画像アッ...
-
WEBサーバーのCGIエラーについて
-
ローカル環境でのCGIエラー
-
patipati設置について
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
SFTPなどは使わないホームペー...
-
VBAでサーバーにアクセスするに...
おすすめ情報