最近、cgiが動いているっぽいのに、ディレクトリのように見える URL がありますが、あれはどうやっているのでしょうか。例:http://www.amazon.co.jp/exec/obidos/tg/browse/-/505198/249-6608479-1047565

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2003/12/06 19:48:05
  • 終了:--

回答(5件)

id:ksone No.1

ksone回答回数65ベストアンサー獲得回数02003/12/06 20:04:15

ポイント20pt

上記URLは如何でしょうか。Apache上の設定みたいですが、結構大変そうですね。

id:landis

「Apache」「URL書き換えルール」がキーワードのようですね。咄嗟に理解できませんでしたが、色々試してみたいと思います

2003/12/06 22:16:27
id:sasada No.2

sasada回答回数1482ベストアンサー獲得回数1332003/12/06 20:23:38

ポイント12pt

 質問文中のURLは、私にはディレクトリ表示に見えませんでした・・・。

 お尋ねの件は、上記URLみたいな物のことでしょうか?

 おまけです。

 スタンドアロン用スクリプトです。

id:landis

いえ、表示されるページのことではなくて、url形式のことです。

ふつうはパラメータをcgiに渡す場合は、sasadaさんが1番目でお書き下さったように index.cgi?page=dl_nobody&from=strange_cgi のように書きますよね。

こうではなくて、これを index/dl_nobody/from/strange_cgi みたいに記述してアクセスさせる方法を知りたかったのでした。

 わかりにくくてすいません。

2003/12/06 22:19:24
id:andymente No.3

andymente回答回数96ベストアンサー獲得回数02003/12/06 20:25:00

ポイント16pt

自分でやるなら、CGI 側で自身の URI を「/」で split して、それを元に色々処理するのが簡単だと思います。

.htaccess でそれっぽい DirectoryIndex を設定するとさらにそれっぽいかもしれません。

id:landis

うぅん、折角ですがすいません、わかりません。

質問に挙げたURLの例だと、cgiで / で split するためには、「exec/obidos/tg/browse/-/505198/249-6608479-1047565」というファイル(cgi)が存在していなければならないように思うのですが。。この例では おそらく実在のcgi は exec/obidos/tg/browse ですよね。(いや、exec だけでその後はみんなパラメタかもしれませんが。)

2003/12/06 22:25:55
id:esper No.4

エスパー回答回数27ベストアンサー獲得回数02003/12/06 20:27:36

ポイント20pt

PATH_INFO(拡張パス情報)ですね。

思えばはてなもそうですね。

環境変数PATH_INFOから実際のスクリプトパス以降にある拡張パス情報を取得出来ます。

id:landis

なるほど。PATH_INFO。新しいキーワードのご教授ありがとうございます。

path_info や apache で探してみるとたくさん情報がありそうです。

2003/12/06 22:36:07
id:tomo_k No.5

tomo_k回答回数426ベストアンサー獲得回数262003/12/06 22:40:12

ポイント12pt

http://www.cresc.co.jp/tech/java/Servlet_Tutorial/Lesson_76.htm

Tomcatへのアプリケーションの配備(Deployment)

たとえば、Servletだったりすると、Tomcatの設定でそのようなURLで動かすことができます。

大規模な商用サイトともなるとCGIですと負荷がかかりすぎるためにServlet+JSP+JAVABeansを採用していることが多いです。

また、Apache+Tomcatの設定によっても可能ですね。

id:landis

ありがとうございます。今回主に念頭にあったのは apache+phpまたはperl だったのですが、Javaの世界が大きな世界には広がりつつあるのですね。

逆にJavaサイトは重い(サーバに負荷がかかる)と思っていたので意外でした。

2003/12/06 22:43:41
  • id:tomo_k
    CGIとServletの負荷

    一般論ですが、CGIはプロセスを生成しますが、Servletはスレッドを生成するにすぎません。
    C言語によるCGIですと比較は難しいですが、PerlによるCGIならばServletの方が速いと言えます。Perlは一般的にインタプリタですので実行時にいちいち機械語に直してあげる作業が必要となります。
    一方、Servletはコンパイル済みでありますが仮想マシーン上で動くものですのでここでも機械語に直す作業が必要です。しかし、Servletは誰かが一度アクセスし起動してあげれば実行イメージ(あまり正確ではありませんが)が残るので2回目のアクセスから高速になります。
    また、開発作業もJSP(HTMLに若干のプログラムが入るイメージ)はデザイナーさんに、ServletとBeansはプログラマーがというように分業が可能なのでこれも大規模なサイトで採用される理由となっているようです。また、データベースアクセスの必要性などからもServletとかPHPは便利ですね。
  • id:honera
    ApacheのRewite

    使っている場合が多いと思います。
    なんだか書かれてなさそうだったので。
    (あんまり真剣にチェックしたわけではないので見落としたかも)
    http://japache.infoscience.co.jp/rewriteguide/
  • id:asakura-t
    Re:CGIとServletの負荷

    >一般論ですが、CGIはプロセスを生成しますが、Servletはスレッドを生成するにすぎません。
    >C言語によるCGIですと比較は難しいですが、PerlによるCGIならばServletの方が速いと言えます。Perlは一般的にインタプリタですので実行時にいちいち機械語に直してあげる作業が必要となります。

    Perlならmod_perlを使いましょう :-)
    はてなもmod_perlを使ってるんじゃなかったかな?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません