くだらない質問はここに書き込め!なんでもアリ4

このエントリーをはてなブックマークに追加
http://pc.2ch.net/test/read.cgi/unix/1010414684/
の180 182 183 185 232参照

■質問:
http://www.2ch.net/ -> http://www.2ch.net への省略がおっけーなのに、
http://www.2ch.net/guide/ -> http://www.2ch.net/guide への省略だと
トラフィックが増えるのはなぜか?

■回答:
例えば、http://www.2ch.net/guide/ というURIがあったとする。ここで、便宜上、

1)http://
2)www.2ch.net
3)/
4)guide
5)/

と分解してみる。
4)5)は、「url-path」と呼ばれ、ファイルの在りかを示すものだ。ファイルの在りかは、

ディレクトリ名ディレクトリ名...ファイル名

という並びになっていて、ファイル名はサーバーの設定により省略可能。
ディレクトリ名は、最後に必ず「/」を付ける習慣になっている。
つまり、5)の「/」は、ディレクトリ名「guide/」の一部で本来省略できない。

ところが、この「/」を間違って省略する例がある。これを省略すると、guideという
ファイル名を指す事になってしまう。しかし、多くのWebサーバーでは、この「/」
が省略されていた場合、親切にも『「/」が抜けてます、本来のアドレスはここですよ』
とブラウザに返す機能が付いている。ブラウザは正しい(「/」付きの)アドレスをWeb
サーバーから受け取り、再度これをサーバーに対してリクエストする。これが、
「負荷増大」の理屈。実際にtelnetで繋ぐと良く分かる。

しかし、3)の「/」は5)の「/」と違い、単に「ホスト部とurl-pathの区切り」であって
完全に別物(*1)であるから、省略しても問題はない(*2)

http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc1738.html
(*1)Note that the "/" between the host (or port) and the url-path is
  NOT part of the url-path.
(*2)If neither <path> nor <searchpart> is present, the "/" may also be omitted.