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