URLの最後に ’/’をつけてるのはブラウザでしょうか? http://www.example.jp/page と指定すると,http://www.example.jp/page/ となります。この最後の / をつけているのはサーバorブラウザなのか,どういう仕様・根拠(RFC番号)でつけてるのか。知りたいです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/05/21 23:15:08
  • 終了:--

回答(3件)

id:garyo No.1

garyo回答回数1782ベストアンサー獲得回数962004/05/21 23:21:51

ポイント30pt

http://www.hatena.ne.jp/1013599015

アドレスの最後に”/”(スラッシュ)で終わる場合とそうでない場合はなにが違うのですか。同じアドレスで付けても付けなくてもちゃんと表示されるのはなぜですか?.. - 人力検索はてな

ブラウザだったと思いますよ。

id:Haik

ありがとうございます。しかし,この回答では,まだ曖昧です。最後に,’/’をつけないというパターンも見たことがあります。サーバとブラウザのどちらか,それとも組み合わせなのか?

2004/05/21 23:41:42
id:aki73ix No.2

aki73ix回答回数5224ベストアンサー獲得回数272004/05/21 23:28:44

ポイント10pt

http://help.domain-keeper.net/cont/hp/server/s_service.html

ドメインキーパー ヘルプセンター - ドメインキーパー各サービスのFAQ、マニュアルを掲載しています。

だと pageというファイルにアクセスしようとします

だと pageというフォルダにある indexファイルにアクセスしようとします

つまり、サーバの仕様です

RFCとはちょっと違いますかね

id:Haik

ありがとうございます。http://www.example.jp/page がファイルでないときに,ブラウザ上では,http://www.example.jp/page/ になっている点。この最後に,’/’をつけているのは誰。なぜつけているかを知りたいのです。

2004/05/21 23:47:55
id:orea No.3

orea回答回数10ベストアンサー獲得回数02004/05/21 23:34:15

ポイント50pt

http://www.atmarkit.co.jp/flinux/rensai/apache05/apache05b.html

絶対外せない基本設定とサーバの動作(2/2)

サーバの設定によります。

id:Haik

なるほど,理解しました。Apacheの場合,ServerNameをつけて,新しいURLを返していると言うことですか。

2004/05/21 23:53:31
  • id:pmakino
    /page の場合はサーバです

    http://www.example.jp の場合は、ブラウザです。
    http://www.example.jp/dir の場合は、サーバです。

    後者については、Apache HTTP サーバの mod_dir モジュール (http://httpd.apache.org/docs-2.0/ja/mod/mod_dir.html) を参照してください。
    「http://servername/foo/dirname という URL へのリクエストがあった際に、dirname というディレクトリがあれば、「最後にスラッシュをつけた形」の URL へのリダイレクトを送出します。 ディレクトリへのアクセスはスラッシュで終わっている必要があり、 mod_dir は、http://servername/foo/dirname/ へのリダイレクトを送出することになります。」とあります。

    このリダイレクトは、より具体的には HTTP ステータス 301 Moved Permanently を返すことによって実現しています。(http://e-words.jp/w/HTTPE383AAE38380E382A4E383ACE382AFE38388.html)

    よって、ブラウザが http://www.example.jp/dir にアクセスすると、サーバが「それは http://www.example.jp/dir/ にあるからそっちを見てね」と返し、ブラウザは自動的に http://www.example.jp/dir/ に再度リクエストします。ですので、http://www.example.jp/dir にリンクすると僅かですが無駄なトラフィックが生じることになります。

    詳しくは、Proxomitron (http://www.pluto.dti.ne.jp/~tengu/proxomitron/) 等のプロクシサーバを使ってログを見ると、実際のやりとりの様子がわかるでしょう。
  • id:chokobo
    Re:/page の場合はサーバです

    私も回答を書いてたら、すでに終了してたので(涙)、同じことですが、書きます。

    apacheの仕様はRFCに(というか、URL(I)の考え方は、RFCよりW3Cが主導しているわけですが、一応その総合情報版 RFC3305があります)即して決められているわけで、

    http://ホスト名
    はURL「仕様上」OKです。

    http://ホスト名/
    と補完する必要はありませんから、これで補完するとすれば、ブラウザでしょう。

    一方、
    http://ホスト名/パス

    http://ホスト名/パス/
    は、そもそもURLの指し示す場所自体がちがうので、

    http://ホスト名/パス
    のリクエストが来たときに、
    http://ホスト名/パス(がしめす「ファイル」)ではなくて、
    http://ホスト名/パス/(がしめす「ディレクトリ」)
    を指したいときは、サーバでやってあげる、ということになります。

    (なおhttp://ホスト名/パス/でファイルが表示されるとすれば、サーバ側でさらに、http://ホスト名/パス/パスのファイル(たとえばindex.html)を表示するように設定している、ということにすぎません)。
  • id:hatene
    はてなダイアリーで/を削ると

    普通のサイトだと意識しなくても勝手に/が付く感じですけど、はてなダイアリーでIDの後ろの/を削ると「そんなページ無いですよ」っていうページがいったん出ますよね。
  • id:chokobo
    Re:はてなダイアリーで/を削ると

    >普通のサイトだと意識しなくても勝手に/が付く感じですけど、
    >はてなダイアリーでIDの後ろの/を削ると「そんなページ無いですよ」
    >っていうページがいったん出ますよね。

    実装はしりませんが、よくある動的サイトのパターンとしては、
    http://d.hatena.jp/ユーザID/
    という実体はないと考えたほうがいいです。

    ユーザIDのURIを、mod_rewriteで、更に書き換えをやってるゆえの、メッセージでしょう。

    http://d.hatena.jp/ユーザID/
    にやってくると、実際のところは、
    /なにかCGIスクリプト?ユーザID用変数=ユーザID
    に内部で書き換えて、DBにアクセスする、という風になっている。

    なので、/ユーザIDだと、まずは、そのようなファイル(実体)がないという風に一旦した上で、こんどは
    /なにかCGIスクリプト?ユーザID用変数=ユーザID
    に変換する、というステップが入る、ということだと想像しますけど。




  • id:sakyo
    Re(2):はてなダイアリーで/を削ると

    (いわしの)他の方の補足。
    http://web-sniffer.net/
    を使うと、サーバーによって異なる、この手の場合の処理の実態が分かることがあります。
    ちなみに、はてなダイアリーの場合、
    .htaccess
    ErrorDocument 404 foo.html
    としたうえで、さらに、HTTP Response Headerで、
    efresh: 0; URL=http://d.hatena.ne.jp/user/
    を出力することで、’/’つきにリダイレクトしてます。
    userが存在するかどうかは判定していません。
    pmakinoさんの書いているmod_dirに加えて、mod_negotiationも影響します。
    W3Cのサイトなんかは、
    Options +Multiviews
    を設定することで’/’つきにリダイレクト(正確には違いますが)していると推測されます。
    この場合、’/dir’というリクエストに対して、
    1.mod_dirによって’/dir/’が検索され、
    2.なければ’/dir.foo’(fooは任意の拡張子)が検索されます
    3.さらに、ブラウザによっては、アドレス欄の’/dir’を’/dir/’に置き換えてからリクエストするために、Multiviewsが指定され、’/dir/’が存在せず、’dir.foo’が存在するにも関わらず、dir.fooにたどり着けないこともあります。(ちなみにSafariがそうです)
    というわけで、質問者の方は見ていなそうですが、基本的にはサーバーの仕業ですが、間の抜けたブラウザの仕業の場合もあります。
    http://httpd.apache.org/docs/content-negotiation.html
  • id:sakyo
    ありがとうございます

    なんか、回答ポイント以上のポイントを送信していただいて、
    却って申し訳ないです。
    遅れてしまいましたが、取り急ぎお礼まで。
  • id:pmakino
    Re:ありがとうございます

    私も、回答ポイント以上のポイントをいただきありがとうございました。

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

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

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

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