- 締切済み
CGIのディレクトリについて詳しい方よろしくお願いします。
CGIを使ううえでディレクトリを2階層にグループ分けをしたいと考えています。 そこで質問ですがディレクトリを2階層にグループ分けをするにはどうすればいいのでしょうか トップでttp://www.アカウント.com/1ディレクトリ/ トップからのリンク先で ttp://www.アカウント.com/1ディレクトリ/2ディレクトリ/**.htm 上記のような感じで考えています。 サーバーの仕様を確認したところCGI専用ディレクトリについて お好きなディレクトリに設置しても動作します。 ただし、ファイル・ディレクトリ名に 「半角英数字」「_(アンダーバー)」「-(ハイフン)」「.(ピリオド)」 以外を使用すると正常に動作致しませんのでご注意ください。 と記載されていました。 CGIやディレクトリ詳しい方よろしくお願いします。
- Lawyer_41
- お礼率18% (27/146)
- CGI
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ORUKA1951
- ベストアンサー率45% (5062/11036)
>トップページからリンク先をクリックするとディレクトリ名が >ttp://ww.*****.com/local/このように変わったのを覚えていますが >これはどんな方法で設置しているのでしょうか? それは単純に、そきにの出力したHTMLにリンクが記載されていただけです。 ★複数のCGIを ・プロトコル://[ドメイン]/path/([CGI_1]) ・プロトコル://[ドメイン]/path/[path/([CGI_2]) ()内のCGIファイル名指定はなくても良い と置いたり プロトコル://[ドメイン]/path/[CGI][/PATH_INFO] と置けたりすることは、HTTPサーバーの動作手順を学べばよいです。極めて単純で機械的な処理です。 例を挙げますが、自身でサーバーを作ってみないとこんがらがるでしょうから、参考までに ブラウザから次のような要求がサーバーにあったとします。 http://[ドメイン名]/ABC/EFG/HIJ?KLM/OPQ この要求を受け取ったサーバーはまず?以下を環境変数{QUERY_STRING}に代入して、 この時点で、$ENV{QUERY_STRING} = KLM/OPQ /ABC/EFG/HIJというファイルを探します。 1) /ABC/EFG/をディレクトリとみなしてされをさがす。 ・・あれば、それがファイルなら提供する ・・実行ファイルならそのプログラムに処理を任せる 2) ファイルでなければ、ディレクトリであるか調べる ・・ディレクトリならそのディレクトリを開き、 そのディレクトの処理方法を調べる a) インデックスを探すならindex.htmlとかindex.cgi 3) ファイルもディレクトリもなければ、 ・・/HIJを切り捨てて、環境変数{PATH_INFO}に/HIJを代入 この時点で、$ENV{QUERY_STRING} = KLM/OPQ #ENV{PATH_INFO} = /HIJ 4) (1)から(2)の作業をする。 5) ファイルもディレクトリもなければ、 ・・/HIJを切り捨てて、環境変数{PATH_INFO}に/EFGを代入 この時点で、$ENV{QUERY_STRING} = KLM/OPQ #ENV{PATH_INFO} = /EFG/HIJ 4) (1)から(2)の作業をする。 ・・・これをサーバーのトップまで実行します。・・・ ですので、ドメイン名以降の[/******」は、実体はなくても良いのです。極端な話、トップに[CGI]が置いてあって、それをディレクトリインデックスとして認識させていれば、ドメイン名以降の[/******」は実在の必要もないのです。 ・・だから難しいといったでしょ・・・ 例]こちらに良い見本があります。 http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi の後ろに任意のURLに使用できる文字を入れてみてください。 http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/Lawyer_41/CGI/aaa?hogehoge/abc=hoge とか・・・/Lawyer_41以降は任意の文字列
- ORUKA1951
- ベストアンサー率45% (5062/11036)
サーバーによっては、CGIは別のサーバーで動作させているものもありますが、ご利用のサーバーでは、任意の場所で動作可能ということです。 トップページ(index.htmlなど)を置くディレクトリに、普通にディレクトリを作り、さらにその中に作ればよいです。 ただし、必ずしもそのディレクトリが必要というわけでしなく、2ディレクトリは実在しなくても良い・・難しいかな。
補足
2ディレクトリは実在しなくても良い というのは、ど言う事でしょうか? 以前、たまたまアクセスしたあるサイトでのことですが CGIが使われていました。 トップ ttp://ww.*****.com/okwave/ トップページからリンク先をクリックするとディレクトリ名が ttp://ww.*****.com/local/このように変わったのを覚えていますが これはどんな方法で設置しているのでしょうか?
関連するQ&A
- ディレクトリの仕組みについて詳しい方
以前、たまたまアクセスしたあるサイトでのことですが CGIが使われていました。 トップ ttp://ww.*****.com/okwave/ トップページからリンク先をクリックするとディレクトリ名が ttp://ww.*****.com/local/****.cgiこのように変わったのを覚えていますが これはどんな方法で設置しているのでしょうか? 詳しい方よろしくおねがいします。
- ベストアンサー
- レンタルサーバ・ASP
- レンタルサーバでディレクトリ・ファイル名をUTF-8に
私の使用しているレンタルサーバでは、ディレクトリ・ファイル名を [半角英数字]・[_(アンダーバー)]・[-(ハイフン)]・[.(ピリオド)] と制限されています。 ディレクトリ・ファイル名にUTF-8(%)を用いたいのですが、それが可能なレンタルサーバをご存知でしょうか? また、これはapacheの設定なのでしょうか?レンタルサーバを変更する以外に何か方法は無いのでしょうか? よろしくお願いいたします。
- ベストアンサー
- ハードウェア・サーバー
- CGIファイル内の CGI呼出しのパスについて
CGI 内からの .cgi ファイルの呼出しのパスについて質問があります。 動作環境は linux - apache - perl です perl の cgi ファイル内で次のように、同じ /cgi-bin ディレクトリ内の reset.cgi をコールしています。 ========== #!/usr/bin/perl (省略) if($form[0] =~ /reset/){ `reset.cgi`; } ========== バッククォートで実行していますが、これでは動作せず、 ./reset.cgi と ピリオド,スラッシュを前に付けると動作します。 少し調べた結果、カレントディレクトリのパスが通っていないのかと考え、 /etc/profile の PATHに下記のように ピリオド を追加してリブートしたところ、 export PATH=$PATH:. ホームディレクトリなどで作成した シェルスクリプトは ./ なしで動くようになりましたが、 /cgi-bin ディレクトリ内の前述のような呼出しは動作しませんでした。 後は httpd.conf などの編集が必要なのかもしれませんが、 良く分かりませんでした。 申し訳ありませんが、教えて頂けると助かります。 よろしく御願い致します。
- ベストアンサー
- CGI
- 再度:cgiから別のcgiへの変数の渡し方
再度教えていただきたいのですが。 前回 http://oshiete1.goo.ne.jp/kotaeru.php3?q=111919 で 1階層目は動いたのですが、2階層目では動きませんでした ブラウザ(IE)のアドレスで何かをさわって更新すると受け取れます。 TOP.CGIより <frame src=\"./B.cgi?UserID=$USR\" name=\"ue\" > A.CGIで受け取れました A.CGI より <FORM METHOD=POST ACTION=\"WT.CGI?U=$USR\" TARGET=\"_top\"> WT_CGIで受け取れませんでした。(ここでアドレス欄をさわって更新) WT_CGIより Location: ./TOP.CGI?U=$USR TOP.CGIで受け取れました。
- ベストアンサー
- CGI
- CGIを一つのサーバーに置くには・・・
こんにちは。 CGI初心者ですよろしくお願いします。 タイトル通りなんですが、サーバにCGIを置きたいのです。 the roomさんのCGI↓ ttp://dream.lib.net/room/ ttp://dream.lib.net/room/cgi/e_ranklink.html 例えば ttp://xxxxx.com/index.html で 二つのランキングサイトを作るには、 ttp://xxxxx.com/rank1/cgi-bin/ranklink/ranklink.cgi? ttp://xxxxx.com/rank2/cgi-bin/ranklink/ranklink.cgi? ディレクトリを分けてやればいいのでしょうか? あと ・他のサーバからのCGIへのアクセスが禁止されている(freeweb等) ・ファイル生成が出来るパーミッション設定が出来ない(基本的には 777。755等でも行ける場合あり) 以上の環境の方は、Ranking Link の設置・運営は不可能です。 また、サーバによってはランキングCGIの設置が禁止されている場合もあります。 よく確認してから設置を行ってください。 では、CGIの設定を行います。 とマニュアルで書いてありました。 ttp://www.asj.ne.jp/faq/index.html ↑のサーバーを使いたいのですが大丈夫でしょうか? もしだめだった場合いい有料サーバー教えてください。
- 締切済み
- CGI
- レンタルCGIの仕組み
アクセスカウンターなどを貸し出しているサイトを良く見かけるのですが、新規登録するとアカウントとパスワードがメールで送られてきてCGIが使用出来る様になりますが、これってどういう仕組みでやっているのでしょうか? CGIだけでアカウント毎にディレクトリーを作ってCGIを動作させてレンタルサービスをしてるんですか? 共有のレンタルサーバー上でCGIを貸し出すのはどの様な方法があるのでしょうか? 漠然とした質問ですみませんが、ご教授よろしくお願いします。
- 締切済み
- CGI
- CGIを設置しても・・・
CGIを設置しようと思っているのですが、 ↓のようなメッセージが出ます。 -------------------------------------------------- あなたの設置したCGIは何らかのエラーのため動作しません。 1.パーミッションはあっていますか? トクトクでは各ユーザーの権限でCGIが動作します。 CGIのパーミッションは700です。 CGIを設置するディレクトリーのパーミッションは701で動作します。 パーミッションについての詳しい説明をお読みください。 それ以外の場合はFTPソフトなどでCGIファイルのパーミッションを正しく設定してください。 2.CGIで使用されるファイルのパスはあっていますか? あなたのディレクトリー(フォルダ)のフルパスは /home/member/あなたのアカウント/です。 3.sendmailを使用しようとしていませんか? sendmailは使用できません。 -------------------------------------------------- このなかで、1番が怪しいと思うのですが・・・ 1番の仕方について教えてもらえませんか。 ちなみに、設置しようとしているCGIは、 http://ama.lunar.to/eb/owners.php3 です。 よろしくお願いします。
- ベストアンサー
- CGI
- PerlでCGIを書いておりますが、特定のURL(ディレクトリ)の位置データを取得するには?
PerlでCGIを書いております。 http://test.com/a/test/index.cgiにアクセスしているときに、perlがaを取得して、http://test.com/b/test/index.cgiにアクセスしているときbを取得する良い方法は有るのでしょうか?WindowsとLinuxの両方で動作できれるものがあれば宜しくお願いします。 WindowsとLinuxではディレクトリの感じが違うようなので1個の方法で実現できれば助かります。
- 締切済み
- CGI
お礼
なるほど、 ttp://ww.*****.com/local/このように変わったのを覚えていますが これはどんな方法で設置しているのでしょうか? についてですが無事に解決しました。 今後の参考になりました。