• 締切済み

CGIのディレクトリについて詳しい方よろしくお願いします。

CGIを使ううえでディレクトリを2階層にグループ分けをしたいと考えています。 そこで質問ですがディレクトリを2階層にグループ分けをするにはどうすればいいのでしょうか トップでttp://www.アカウント.com/1ディレクトリ/ トップからのリンク先で ttp://www.アカウント.com/1ディレクトリ/2ディレクトリ/**.htm 上記のような感じで考えています。 サーバーの仕様を確認したところCGI専用ディレクトリについて お好きなディレクトリに設置しても動作します。 ただし、ファイル・ディレクトリ名に 「半角英数字」「_(アンダーバー)」「-(ハイフン)」「.(ピリオド)」 以外を使用すると正常に動作致しませんのでご注意ください。 と記載されていました。 CGIやディレクトリ詳しい方よろしくお願いします。

みんなの回答

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

>トップページからリンク先をクリックするとディレクトリ名が >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以降は任意の文字列

Lawyer_41
質問者

お礼

なるほど、 ttp://ww.*****.com/local/このように変わったのを覚えていますが これはどんな方法で設置しているのでしょうか? についてですが無事に解決しました。 今後の参考になりました。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

サーバーによっては、CGIは別のサーバーで動作させているものもありますが、ご利用のサーバーでは、任意の場所で動作可能ということです。 トップページ(index.htmlなど)を置くディレクトリに、普通にディレクトリを作り、さらにその中に作ればよいです。  ただし、必ずしもそのディレクトリが必要というわけでしなく、2ディレクトリは実在しなくても良い・・難しいかな。

Lawyer_41
質問者

補足

2ディレクトリは実在しなくても良い というのは、ど言う事でしょうか? 以前、たまたまアクセスしたあるサイトでのことですが CGIが使われていました。 トップ ttp://ww.*****.com/okwave/ トップページからリンク先をクリックするとディレクトリ名が ttp://ww.*****.com/local/このように変わったのを覚えていますが これはどんな方法で設置しているのでしょうか?

関連するQ&A