web-dev-qa-db-ja.com

URLでは、//は何のためですか?

通常、//が表示される場合、通常はhttp:ftp:などのプロトコルプレフィックスに従います。それが他の場所に置かれるのを見たことがありません。例えば、

http://www.google.com/

は典型的なURLです。

ただし、同じサイトの異なるバージョンを生成する次の2つの構文が見つかりました。

http://www.weather.com/

http://www.weather.com//

プロトコルの仕様以外では//は無効になると思っていました。驚いたことに、私は間違っていました。 末尾の//について、同じサイトの異なるバージョンが表示されるのは何ですか?

編集:

両方のリンクが同じページに表示されるようになったので、そのサイトの誰かがもう一方の風に巻き込まれたに違いありません。

40
Chad Harrison

先頭の//は、URL構文の一部です。ワールドワイドウェブの発明者は その誤りについて謝罪 をしています。

実際、考えればダブルスラッシュは必要ありません。ダブルスラッシュがないように設計することもできました。 -ワールドワイドウェブの発明者、ティムバーナーズリー卿


末尾の//については、実際には二重スラッシュではありません。最初のスラッシュは、ホスト名とパスを区切ります。最後のスラッシュはパスです。 Webサーバーは、必要に応じて、/のパスを空のパスとは異なるものとして扱うことができます。どうやらweather.comはそうです。これが偶然なのか故意なのかについては、あなたは彼らにそれについて尋ねなければなりません。

68
David Schwartz

最近では、二重スラッシュが役割を果たしていると主張することができますGoogle推奨 (安全なページから誤って安全でないコンテンツを呼び出すのを回避するためなど)埋め込みリソース(スタイルシート、jsなど)からプロトコルを省略します。

<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>

したがって、このようなプロトコルのないURLは完全修飾URLであり、相対URL(単一のスラッシュで始まる)ではないことが明らかになりました。

19
DaveP

質問に実際に答えるために、元の仕様ではプロトコルhttp:(またはftp:Gopher:mailto:news:telnet:wais:file:またはprospero:)、次に//は、Uniform Resource Locator(URL)構文が使用されたことを示し、次にホスト(オプションでuser:password@)次に、別の/で始まる適切なアドレスを指定します。これは RFC 1738 で提案されました。

インターネットの進化に伴い、http:が主要なプロトコルになり、ブラウザはhttp://のプレフィックスがない場合は追加する必要があると想定します。

13
StarNamer

デビッドの承認された回答に追加したいと思います。

Webの発明者の謝罪にもかかわらず、二重スラッシュ構文は重要な目的を果たしたと思います:視覚的に目立つことです。ダブルスラッシュを使用すると、ハイパーリンクのないテキスト内のURLを簡単に視覚的に区別できます。ダブルスラッシュを見つけたとき、@を含むテキストを使用してメールを送信できると思ったのと同様に、ブラウザウィンドウに入力できるとすぐに思いました。その時代のプロトコル(ftp、telnet、Gopher)がサーバーアドレスまたはリソースパスを表す独自の奇妙な概念を持っていたWebへの移行段階では特に重要でした。ダブルスラッシュはURLの最も不可解な部分であるため、ダブルスラッシュに関連する問題のほとんどは依然として存在します。ポート番号、エンコードの割合、大文字と小文字の区別について考えてください。しかし、http:something.comのようなURLは、ここの例:something.comと簡単に混同される可能性があります。一方、http://を見ると、ダイヤモンドのように輝いています。ダブルスラッシュはWebシンボリズムの重要な部分であり、それが意図的ではなかったとしても、それが採用率も加速させたと私は信じています。

また、AmigaOSがファイルパス構文volume:path/to/destinationを使用したため、ファイル名とURLを区別しやすくなった可能性もあります。 :)

1
Sedat Kapanoglu