• 締切済み

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

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

  • CGI
  • 回答数2
  • ありがとう数1

みんなの回答

  • 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

  • ディレクトリの仕組みについて詳しい方

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

  • レンタルサーバでディレクトリ・ファイル名を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の index.cgi?m=admin& から2階層上のディレクトリの index.cgi? に戻るリンクアンカーが <a href="?">フォーム</a> ってなってましたが この?マーク、これは正しいですか? 正しいアンカーの書き方があれば教えて下さい。

    • ベストアンサー
    • 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
  • 正規表現の記載方法

    どなたかお知恵をお貸し下さい。 PHPの正規表現で、 6文字以上20文字以下 英数字 -(ハイフン _(アンダーバー) ,(カンマ) .(ピリオド) 最初の1文字目はアルファベット というものを表現したいです。 お知恵をお貸し下さい。 お願いいたします。

    • ベストアンサー
    • PHP
  • レンタル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

専門家に質問してみよう