URLで大文字と小文字が区別されるのはなぜですか?


54

私の質問:URLが最初に設計されたとき、大文字と小文字の区別が機能になったのはなぜですか?私(つまり、素人)には、不必要なエラーを防ぎ、すでに複雑なテキスト文字列を単純化するために、大文字と小文字を区別しないことが好ましいと思われるため、これを尋ねます。

また、大文字と小文字を区別するURLを使用することに本当の目的/利点はありますか(大文字と小文字に関係なく同じページを指すURLの大部分とは対照的ですか)?

たとえば、ウィキペディアは、大文字と小文字を区別するWebサイトです(最初の文字を除く)。

https://en.wikipedia.org/wiki/St ck_Exchangeは DOAです。


11
あなたは明らかWindows上でIISを実行していない
ジョン・コンデ

53
itscrap.com、expertsexchange、whorepresents.comでは、大文字と小文字を区別する名前を使用する人の数を増やしたいと考えています。詳細については、boredpanda.com / worst-domain-namesを参照してください。
エリックタワーズ

22
URLは、Unixシステムでレンダリングされた恐竜が地球を移動したときに設計されたもので、Unixでは大文字と小文字が区別されます。
するThorbjörnRavnアンデルセン

11
ウィキペディアは、件名に正しい大文字を使用しようとし、一般的な違いにリダイレクトを使用します。例えば。htmlhtmそしてHtmlすべてがにリダイレクトしますHTML。しかし重要なことは、膨大な主題のために、URLが大文字と小文字のみが異なる複数のページを持つことが可能です。たとえば、次のようにラテックスLaTeXの
MrWhite

7
@ edc65しかし、Kobi は、URLの一部(特にpath大文字と小文字が区別されると述べています。
MrWhite

回答:


8

URLで大文字と小文字が区別されないのはなぜですか?

私はそれが挑発的な(そして「悪魔の擁護者」)タイプの修辞的な質問のように見えるかもしれないことを理解していますが、私はそれを考慮することは有用だと思います。HTTPの設計では、一般に「Webブラウザ」と呼ばれる「クライアント」が「Webサーバー」にデータを要求します。

リリースされている多くの異なるWebサーバーがあります。Microsoftは、Windows Serverオペレーティングシステム(およびWindows XP Professionalを含むその他)を備えたIISをリリースしました。Unixには、OpenBSDの内部httpd、thttpd、またはlighttpdのような小さな製品は言うまでもなく、nginxやApacheのようなヘビーウェイトがあります。さらに、多くのネットワーク対応デバイスには、ルーター(多くのWi-FiアクセスポイントやDSLモデムを含む)などのネットワーク固有の目的を持つデバイスや、プリンターやネットワーク接続が可能なUPS(バッテリバックアップ式無停電電源装置)。

そのため、「URLで大文字と小文字が区別される理由」という質問は、「WebサーバーがURLを大文字と小文字を区別するのはなぜですか?」そして、実際の答えは次のとおりです。かなり人気のある少なくとも1つのWebサーバーは通常、大文字と小文字を区別しません。(WebサーバーはIISです。)

異なるWebサーバー間で異なる動作をする主な理由は、おそらく簡単さの問題に帰着します。Webサーバーを作成する簡単な方法は、コンピューター/デバイスのオペレーティングシステムがファイルを検索する方法と同じ方法です。多くの場合、Webサーバーは応答を提供するためにファイルを見つけます。Unixはハイエンドコンピューターを中心に設計されているため、Unixは大文字と小文字を許可する望ましい機能を提供しました。Unixは大文字と小文字を異なるものとして扱うことにしました。それは簡単で自然なことです。Windowsには、すでに作成されたソフトウェアをサポートしたいという理由から、大文字と小文字を区別しないという歴史があります。この歴史は、単に小文字をサポートしていなかったDOSにまで遡ります。おそらく、メモリの使用量が少なく、性能の低いコンピューターで物事を単純化するための努力です。これらのオペレーティングシステムは異なるため、結果として、単純に設計された(初期バージョンの)Webサーバーは同じ違いを反映します。

ここで、すべての背景を踏まえて、特定の質問に対する具体的な回答を次に示します。

URLが最初に設計されたとき、なぜ大文字と小文字の区別が機能になったのですか?

何故なの?すべての標準Webサーバーで大文字と小文字が区別されない場合、それはWebサーバーが標準で指定された一連のルールに従っていることを示します。ケースを無視する必要があると言うルールはまったくありませんでした。ルールがない理由は、そのようなルールが存在する理由がなかったからです。なぜ不要なルールを作成するのが面倒ですか?

私(つまり、素人)には、不必要なエラーを防ぎ、すでに複雑なテキスト文字列を単純化するために、大文字と小文字を区別しないことが好ましいと思われるため、これを尋ねます。

URLは、マシンが処理するために設計されました。ユーザーは完全なURLをアドレスバーに入力できますが、これは意図した設計の主要部分ではありませんでした。意図した設計は、人々がハイパーリンクをたどる(「クリックする」)ことです。平均的な素人がそうしている場合、目に見えないURLが単純か複雑かは本当に気にしません。

また、大文字と小文字を区別するURLを使用することに本当の目的/利点はありますか(大文字と小文字に関係なく同じページを指すURLの大部分とは対照的ですか)?

William Hayの答えの5番目のポイントは、1つの技術的利点に言及しています:URLはWebブラウザーがWebサーバーに少しの情報を送信する効果的な方法であり、制限が少ない場合により多くの情報を含めることができるため、大文字と小文字の区別制限により、含めることができる情報量が減少します。

ただし、多くの場合、大文字と小文字の区別に大きな魅力的な利点はありません。これは、IISが通常は気にしないという事実によって証明されています。

要約すると、最も説得力のある理由は、特にUnixなどの大文字と小文字を区別するプラットフォームでWebサーバーソフトウェアを設計した人にとっては、単純であることです。(HTTPはUnixの元の設計に影響を与えるものではありませんでした。UnixはHTTPよりも著しく古いためです。)


「異なるWebブラウザ間で異なる動作をする主な理由は、おそらく簡単さの問題に帰着するでしょう。」-ここや他のいくつかの場所では、「ウェブブラウザ」ではなく「ウェブサーバー」を意味すると思いますか?
MrWhite

2
更新しました。「ブラウザ」のすべてのケースを確認し、複数の置換を行いました。いくつかの品質を改善できるようにこれを指摘していただきありがとうございます。
TOOGAM

1
歴史的なものから技術的なものまで、私の質問に対するいくつかの優れた回答を受け取りました。私は穀物に反対し、より低い評価の回答を受け入れることをamしていますが、@ TOOGAMの回答は私にとって最も役に立ちました。この答えは徹底的かつ広範囲に渡っていますが、理解できる複雑な会話形式で概念を説明しています。そして、この答えは、より詳細な説明への良い入門だと思います。
カイル

74

URLは大文字と小文字を区別せず、その一部のみです。
たとえば、URL https://google.comでは大文字と小文字が区別されません。

参照してRFC 3986 -統一資源識別子(URI):一般的な構文

まず、Wikipediaから、URLは次のようになります。

 scheme:[//host[:port]][/]path[?query][#fragment]

user:password面白くなく、めったに使用されないため、この部分を削除しました)

スキームは大文字と小文字を区別しません

ホストサブコンポーネントは大文字と小文字を区別しません。

パスコンポーネントにはデータが含まれています...

クエリコンポーネントには、非階層データが含まれています...

個々のメディアタイプは、さまざまなタイプのサブセット、ビュー、または外部参照を指定するためのフラグメント識別子構文内の独自の制限または構造を定義できます

したがって、schemeand hostは大文字と小文字を区別しません。
URLの残りの部分では大文字と小文字が区別されます。

path大文字と小文字が区別されるのはなぜですか?

これが主な質問のようです。文書化されていない場合、「なぜ」行われた
を答えることは困難ですが、非常に良い推測ができます。データに 重点を置いて、仕様から非常に具体的な引用を選びました。 もう一度URLを見てみましょう。

 scheme:[//host[:port]][/]path[?query][#fragment]
 \____________________/\________________________/
        Location                 Data
  • 場所-場所には標準形式があり、大文字と小文字は区別されません。どうして?おそらく、何千ものバリアントを購入することなくドメイン名を購入できるでしょう。

  • データ-データはターゲットサーバーによって使用され、アプリケーションはその意味を選択できます。データの大文字と小文字を区別しないことは意味がありません。アプリケーションにはさらにオプションが必要です。仕様で大文字と小文字を区別しないように定義すると、これらのオプションが制限されます。
    これは、HTTPSの便利な区別でもあります。データは暗号化されますが、ホストは表示されます。

便利ですか?

キャッシングと正規URLに関しては、大文字と小文字の区別に落とし穴がありますが、確かに便利です。いくつかの例:


1
「URLは大文字と小文字を区別しません。」/「URLの残りの部分では大文字と小文字が区別されます。」-これは矛盾のように思えますか?
-MrWhite

8
実際、スキームは、URLの残りの部分で何を期待するかを定義します。http:および関連するスキームは、URLがDNSホスト名を参照することを意味します。DNSは、URLが発明される以前からASCIIで大文字と小文字を区別していませんでした。55ページを参照してくださいietf.org/rfc/rfc883.txt
O.ジョーンズ

3
きちんと詳細!私は歴史的な観点から行っていました。もともとは、ファイルシステムにアクセスする場合にのみ大文字と小文字を区別する必要があるファイルパスでした。そうでなければ、そうではありませんでした。しかし、今日、状況は変わりました。たとえば、元々パラメータとCGIは存在しませんでした。あなたの答えは、今日の視点を取ります。あなたの努力に報いる必要がありました!! これを本当に掘り下げました!誰がこれがそうするように爆発することを知っていましたか?? 乾杯!!
closetnoc

2
@ w3dk:用語のあまり面白くない癖ですが、「大文字と小文字を区別する」、「キャラクターの大文字と小文字を変えると全体が変わる」、または「文字の大文字小文字は常に全体を変更します」。Kobiは後者を主張しているようで、大文字と小文字を区別することは「大文字と小文字の変更はいずれも重要である」ということを好むが、これはもちろんURLには当てはまらない。前者を好む。それは、彼らがどの程度敏感であるという問題です。
スティーブジェソップ

2
@ rybo111:ユーザーがexample.com/fOObaRを入力した場合、仕様ではwww.example.comのサーバーが指定されたパス「/ fOObaR」を受信する必要があります。サーバーが「/ foOBaR」とは異なる方法でそれを処理する必要があるかどうかの質問には沈黙しています。
-supercat

59

シンプル。OSは大文字と小文字を区別します。通常、Webサーバーは、ある時点でファイルシステムにアクセスする必要がある場合を除き、気にしません。これは、Linuxおよび他のUnixベースのオペレーティングシステムがファイルシステムのルールを強制する場所であり、大文字と小文字の区別が主要な部分です。これが、IISが大文字と小文字を区別したことがない理由です。Windowsでは大文字と小文字が区別されなかったためです。

[更新]

私が述べたように、URLがファイルシステムと何らかの関係を持っているかどうかについて、コメントには(削除されたために)いくつかの強い議論がありました。これらの議論は白熱しています。関係がないと信じることは非常に近視眼的です。絶対にあります!さらに説明させてください。

一般に、アプリケーションプログラマはシステム内部プログラマではありません。私はin辱されていません。これらは2つの異なる分野であり、アプリケーションがOSを単に呼び出すことができる場合、アプリケーションを記述するためにシステム内部の知識は必要ありません。アプリケーションプログラマはシステム内部プログラマではないため、OSサービスをバイパスすることはできません。これは、これらが2つの別々のキャンプであり、めったに交差しないためです。アプリケーションは、OSサービスを原則として使用するように作成されています。もちろん、いくつかの例外はまれです。

Webサーバーが登場し始めた頃、アプリケーション開発者はOSサービスをバイパスしようとしませんでした。これにはいくつかの理由がありました。1つは、必要ではありませんでした。2つ目は、アプリケーションプログラマは一般にOSサービスをバイパスする方法を知りませんでした。3つ目は、ほとんどのOSが非常に安定して堅牢であるか、非常にシンプルで軽量でコストに見合わないということです。

初期のWebサーバーは、DEC VAX / VMSサーバーなどの高価なコンピューターや、メインフレームまたはミッドフレームコンピューター上のその日のUnix(BerkeleyとUltrixなど)で実行され、その後すぐに実行されたことに留意してくださいPCやWindows 3.1などの軽量コンピューター。1997/8年にGoogleのような最新の検索エンジンが登場し始めたとき、WindowsはWindows NTに移行し、NovellやLinuxなどの他のOSもWebサーバーを実行し始めました。Apacheが主要なWebサーバーでしたが、IISやO'Reillyなど、他にも非常に人気があったものがありました。当時は、OSサービスをバイパスしていませんでした。今日でもWebサーバーはどれも実行していない可能性があります。

初期のWebサーバーは非常にシンプルでした。彼らはまだ今日です。ハードドライブに存在するHTTPリクエストを介してリソースに対して行われたリクエストは、OSファイルシステムを介してWebサーバーによって行われました。

ファイルシステムはかなり単純なメカニズムです。ファイルへのアクセス要求が行われると、そのファイルが存在する場合、要求は許可サブシステムに渡され、許可される場合、元の要求は満たされます。リソースが存在しないか、許可されていない場合、システムによって例外がスローされます。アプリケーションが要求を行うと、トリガーが設定され、アプリケーションが待機します。要求に応答すると、トリガーがスローされ、アプリケーションが要求応答を処理します。今日でもそのように機能します。アプリケーションは、要求が満たされたことを確認した場合、続行し、失敗した場合、コード内でエラー状態を実行するか、処理されない場合は終了します。シンプル。

Webサーバーの場合、パス/ファイルのURL要求が行われたと仮定すると、WebサーバーはURL要求(URI)のパス/ファイル部分を取得し、ファイルシステムに要求を行い、それが満たされるまたは例外をスローします。次に、Webサーバーが応答を処理します。たとえば、要求されたパスとファイルが見つかり、認証サブシステムによってアクセスが許可された場合、WebサーバーはそのI / O要求を通常どおり処理します。ファイルシステムが例外をスローした場合、ファイルが見つからない場合はWebサーバーは404エラーを返し、理由コードが許可されていない場合は403 Forbiddenを返します。

一部のOSでは大文字と小文字が区別され、このタイプのファイルシステムは完全に一致する必要があるため、Webサーバーに要求されるパス/ファイルはハードドライブに存在するものと正確に一致する必要があります。その理由は簡単です。Webサーバーは、意味を推測しません。プログラミングされていないコンピュータはそうしません。Webサーバーは、要求を受け取ったときに処理するだけです。ファイルシステムに直接渡されるURL要求のパス/ファイル部分がハードドライブ上のものと一致しない場合、ファイルシステムは例外をスローし、Webサーバーは404 Not Foundエラーを返します。

それは本当にその単純な人々です。それはロケット科学ではありません。URLのパス/ファイル部分とファイルシステムの間には絶対的な関係があります。


1
あなたの議論には欠陥があると思います。Berners-Leeには、ftp URLの大文字と小文字の区別に関する選択肢がありませんでした。彼はhttp URLを設計しました。彼はそれらをUS-ASCIIのみとして指定し、大文字と小文字を区別しなかったかもしれません。URLパスをファイルシステムに渡したばかりのWebサーバーがあった場合、それらは安全ではなく、URLエンコーディングの導入はそれらとの互換性を壊しました。OSスマッシングケースに渡す前にパスが処理されていることを考えると、実装は簡単でした。したがって、私たちはこれを実装上の癖ではなく設計上の決定と見なさなければならないと思います。
ウィリアムヘイ

@WilliamHayこれは、Berners-LeeやWebのデザインとは関係ありません。OSの制限と要件についてです。私は退職したシステム内部エンジニアです。当時これらのシステムに取り組んでいました。URLで大文字と小文字が区別される理由を正確に説明しています。推測ではありません。それは意見ではありません。事実です。私の答えは意図的に簡素化されました。もちろん、開いているステートメントを発行する前に実行できるファイルチェックおよびその他のプロセスがあります。その結果、Yes(!)Webサーバーは現在でも部分的に安全ではありません。
closetnoc

URLで大文字と小文字が区別されるかどうかは、Webのデザインとは関係ありませんか?本当に?機関からの議論に続いてアサーションによる議論。WebサーバーがURLのパスコンポーネントを多かれ少なかれ直接オープンコールに渡すのは、URLの設計の結果であり、その原因ではありません。サーバー(またはFTPの場合はスマートクライアント)は、ファイルシステムの大文字と小文字の区別をユーザーから隠している可能性があります。そうでないことは設計上の決定です。
ウィリアムヘイ

@WilliamHayあなたは草のホッパーを遅くして、私が書いたものを読み直す必要があります。私は退職したシステム内部エンジニアであり、OSコンポーネント、プロトコルスタック、およびARPA-Netなどのルーターコードを記述しています。Apache、O'Reilly、およびIIS内部で働いていました。少なくとも主要なFTPサーバーは同じ理由で大文字と小文字を区別するため、FTP引数には水が含まれません。URL / URIの設計については何も言いませんでした。Webサーバーが処理せずに値を渡すことは一度もなかった。OSサービスが一般的に使用され、成功するにはファイルシステムが完全に一致する必要があると言いました。
closetnoc

@WilliamHayあなたと私は多目的で考えていることを理解してください。私の答えで言っていたのは、一部のOSでは、ファイルシステムコールは仕様上大文字と小文字を区別するということです。システムコールを使用するアプリケーションは、ほとんどの場合、OSルール(この場合は大文字と小文字の区別)の施行に制限されます。このルールをバイパスすることは不可能ではありません。実際には、これは実際的ではありませんが、場合によっては些細なことかもしれません。私は日常など、何らかの理由でkablooie行ってきましたハードドライブのスクランブルを解除するか、データベースファイルの内部を解析するために私の仕事では、ファイルシステムをバイパスするために使用
closetnoc

21
  1. URLは、UNIFORMリソースロケーターであると主張し、Webより前のリソースを指すことができます。これらの一部は大文字と小文字が区別され(たとえば、多くのftpサーバー)、URLは合理的に直感的な方法でこれらのリソースを表すことができる必要があります。

  2. 大文字と小文字を区別しない場合、一致を検索するときに(OSまたはそれ以上で)より多くの作業が必要です。

  3. 大文字と小文字を区別するようにURLを定義すると、個々のサーバーは必要に応じて大文字と小文字を区別しないようにURLを実装できます。その逆は当てはまりません。

  4. ケース非感受性は、国際的な文脈で非自明なことができます: https://en.wikipedia.org/wiki/Dotted_and_dotless_I。また、RFC1738では、エンコードされていても文字セットを指定していなければ、ASCII範囲外の文字を使用できました。これは、WORLDワイドウェブと呼ばれるものにとって非常に重要です。大文字と小文字を区別しないURLを定義すると、バグの可能性が広がります。

  5. 多数のデータをURI(Data URIなど)にパックしようとしている場合、大文字と小文字が区別される場合はさらにパックできます。


1
URLは歴史的にASCIIに限定されていたと確信しています。したがって、国際化が最初の理由になることはほとんどありません。大文字小文字を区別するUnixの歴史であるOTOHは、おそらく大きな役割を果たしました。
デロバート

URLでエンコードされていないASCIIのサブセットのみを使用できますが、RFC1738では、ASCII範囲外の文字がエンコードされて使用される可能性があることを明記しています。文字セットを指定しないと、大文字小文字を除いて、どのオクテットが同じ文字を表すかを知ることはできません。更新しました。
ウィリアムヘイ

1
日時#4:それは実際にはそれより悪いです。私は、すべてがUTF-8(または他のUTF)であっても、テキストが属するロケールを知らずに大文字や小文字を正しく使用できないという、より一般的な原則のデモです。デフォルトのロケールでは、大文字のラテン文字Iは小文字のラテン文字iに小文字になりますが、トルコ語ではドットが追加されるため間違っています(「トルコ語の大文字のドットなしI」コードポイントはありません。ASCIIコードを使用することになっています)ポイント)。エンコードの違いを投げると、これは「本当に難しい」から「完全に手に負えない」ものになります。
ケビン

5

私はブログから「何か新しいことがあるのはなぜか」という形式の質問に近づいてくるという習慣を古いものから盗みました。「もしそうでなければ、世界はどのようなものになるでしょうか?」

たとえば、オフィスにいるときに電話でドキュメントファイルを読むことができるように、フォルダからドキュメントファイルを提供するようにWebサーバーをセットアップしたとします。さて、マイドキュメントフォルダに、私は、3つのファイルを持っているtodo.txtToDo.txtTODO.TXT(私は知っているが、私はファイルを作ったとき、それは私には意味を成していました)。

これらのファイルにアクセスするために、どのURLを使用できるようにしますか?を使用して、直感的な方法でそれらにアクセスしたいと思いますhttp://www.example.com/docs/filename

アドレス帳に連絡先を追加できるスクリプトがあるとします。これはWebでも実行できます。それはどのようにパラメータを取るべきですか?まあ、私は好き、それを使用したいです:http://www.example.com/addcontact.php?name=Tom McHenry von der O'Reilly。しかし、ケースごとに名前を指定する方法がない場合、どうすればいいですか?

CatとCAT、TextとTEXT、latexとLaTeXのWikiページをどのように区別しますか?ページの曖昧さをなくすと思いますが、私が求めたものを手に入れることを好みます。

とにかく、それは間違った質問に答えているように感じます。

私があなたが本当に求めていたと思う質問は、「なぜウェブサーバーは、単にケースの違いのために、彼らが人生をより簡単にするために設計されたコンピュータであり、少なくとも最も明白なケースの違いを見つけることができるのですか?入力したURLは機能しますか?」

これに対する答えは、一部のサイトはこれを行っていますが(さらに良いことに、他のタイプミスもチェックしています)、Webサーバーのデフォルトの404エラーページを変更する価値があるとは誰も考えていません...


1
一部のサイトでは、何らかのメカニズムを使用して、クエリをすべて小文字または一貫性のあるものに変換します。ある意味では、これは賢いことです。
-closetnoc

いいえ、そうすべきではありません。この機能は、必要に応じて追加することができます(たとえば、Apacheのモジュールによって追加されます)。この種の変更をデフォルトの動作として、またはさらに悪いことに不変の動作として、比較的まれなものよりも破壊的であるホスト名以外のURLを手動で入力する必要がある場合。これを行わない理由の良い例として、Network Solutionsが、パブリックDNSクエリから存在しないドメインエラーを「修正」したときの大失敗を思い出してください。
SirNickity

@SirNickityどのレベルでも不変性を提案する人はいませんでした。また、Webサーバーエラーページは、これまで使用したすべてのWebサーバーで構成可能です。404を30 *コードに置き換えることを提案する人はいませんでしたが、人間がクリックできる提案リンクのリストをエラーページに追加しています。ドメイン名は非常に異なるトピックであり、大文字と小文字を区別しない問題であり、セキュリティコンテキストも異なります。また、IISはURIのパスまたはファイル名の部分で大文字と小文字の違いを自動的に「修正」します(無視します)。
デウィモーガン

1996年以来、Apacheはmod_spelingでこれを可能にしました。これは、非常に人気のあることではないようです。Unix / Linuxの人々は、大文字と小文字を区別しないことをルールとして、大文字と小文字を区別しないことを例外と見なしています。
reinierpost

4

上記の答えは正しいですが、良いです。さらにポイントを追加したいと思います。

よりよく理解するには、Unix(Linux)とWindowsサーバーの基本的な違いを理解する必要があります。Unixは大文字と小文字を区別し、Windowsは大文字と小文字を区別しないOSです。

HTTPプロトコルは、1990年頃に進化または実装が開始されました。HTTPプロトコルは、CERN研究所で働くエンジニアによって設計されました。当時の科学者のほとんどは、WindowsではなくUnixマシンを使用していました。

ほとんどの科学者はUnixに精通していたため、Unixスタイルのファイルシステムに影響されていた可能性があります。

Windowsサーバーは2000年以降にリリースされました。Windowsサーバーが普及するかなり前に、HTTPプロトコルは十分に成熟し、仕様は完全でした。

これが理由かもしれません。


2
「Windowsサーバーは2000年以降にリリースされました。」3.1のWindows NT NTが成熟し、ビジネスクリティカルなサーバアプリケーションをサポートするために十分に確立十分になって始めたとき、チームは1993年にあなたと一緒に反対していたNT、1995年の3.51は、おそらくでした。
CVn

NT 3.51にはWin 3.1インターフェイスがありました。WindowsはWindows 95になるまで実際に離陸しませんでしたが、同じインターフェースを得るにはNT 4.0が必要です。
するThorbjörnRavnアンデルセン

MichaelKjörlingは同意しました。変更させてください。
マニ

1
@ThorbjørnRavnAndersenサーバー市場では、NT 3.51がかなり成功しました。消費者/消費者市場では、Windows 2000(NT 5.0)がNTラインに大きな影響を与えるまでに時間がかかりました。
CVn

実際、WorldWideWebは当初、大文字と小文字を区別するファイルシステムを持つUnixベースのシステムで開発され、ほとんどのURLはファイルシステム上のファイルに直接マッピングされていました。
reinierpost

4

「なぜこのように設計されたのか」をどのように読むべきでしょうか?質問?あなたは意思決定プロセスの歴史的に正確な説明を求めていますか、それとも「だれかがこのように設計するのでしょうか?」と尋ねていますか?

歴史的に正確なアカウントを取得することはほとんど不可能です。時には、標準化委員会で決定が下されると、議論がどのように行われたかについてのドキュメンタリートレイルがありますが、Webの初期には、数人の個人によって急いで決定が行われました-この場合は、おそらくTimBL自身によって-理論的根拠はほとんどありません書き留められた。しかし、TimBLはURLの設計に間違いを犯したことを認めています-http://www.dailymail.co.uk/sciencetech/article-1220286/Sir-Tim-Berners-Lee-admits-forward-slashes-web-addressを参照してください-mistake.html

初期のURLはファイル名に非常に直接マッピングされ、ファイルは一般的にUnixライクなマシン上にあり、Unixライクなマシンは大文字と小文字を区別するファイル名を持っています。したがって、実装の利便性のためにそのようになったのではないかと推測し、(エンドユーザーの)ユーザビリティも考慮されていませんでした。繰り返しますが、初期の段階では、ユーザーはすべてUnixプログラマーでした。


エンドユーザーもUnixユーザー(プログラマーである必要はありませんが、高エネルギーの物理学者など)であったため、ユーザーも大文字と小文字を区別しませんでした。
reinierpost

3

これは、ドメインを購入した場所とは関係ありません。DNSは大文字と小文字を区別しません。ただし、ホスティングに使用しているサーバー上のファイルシステムは次のとおりです。

これは実際には問題ではなく、* nixホストではかなり一般的です。ページに書くすべてのリンクが正しいことを確認し、問題がないことを確認してください。簡単にするために、リンクの作成時にページの名前を常にすべて小文字にすることをお勧めします。そうすることで、リンクの作成時に名前を再確認する必要がなくなります。


2

ClosetnocはOSについて正しいです。一部のファイルシステムは、大文字と小文字が異なる同じ名前を異なるファイルとして扱います。

また、大文字と小文字を区別するURLを使用することに本当の目的/利点はありますか(大文字と小文字に関係なく同じページを指すURLの大部分とは対照的ですか)?

はい。重複コンテンツの問題を回避するため。

たとえば、次のURLがある場合:

http://example.com/page-1
http://example.com/Page-1
http://example.com/paGe-1
http://example.com/PAGE-1
http://example.com/pAGE-1

全員がまったく同じコンテンツのまったく同じページを指していた場合、コンテンツが重複することになります。Google検索コンソール(ウェブマスターツール)アカウントをお持ちの場合は、Googleがそのことをお知らせします。

そのような状況にある場合、私が提案することは、すべて小文字のURLを使用し、少なくとも1つの大文字を含むURLを小文字バージョンにリダイレクトすることです。したがって、上記のURLのリストで、すべてのURLを最初のURLにリダイレクトします。


「はい。コンテンツの重複の問題を回避します。」-しかし、反対は本当のように思えますか?URLは大文字と小文字を区別することができます(これは、検索エンジンがそれらをどのように扱うかである)ということは、原因となるあなたが言及重複コンテンツの問題を。URLが一般的に大文字と小文字を区別しない場合、大文字と小文字が異なる重複コンテンツの問題はありません。page-1同じになりPAGE-1ます。
-MrWhite

貧弱なサーバー構成は、ケーシングに関してはコンテンツの重複を引き起こす可能性があると思います。たとえばRewriteRule ^request-uri$ /targetscript.php [NC]、.htaccessに保存されているステートメントは一致http://example.com/request-uriします。これは、1つの正規表現を評価するときに大文字と小文字が区別されないことを示すhttp://example.com/ReQuEsT-Uriため[NC]です。
マイク

1

大文字と小文字の区別には価値があります。

26文字があり、それぞれ大文字で入力できる場合は、52文字です。

4文字は、52 * 52 * 52 * 52の組み合わせの可能性があり、7311616の組み合わせに相当します。

文字を大文字にできない場合、組み合わせの量は26 * 26 * 26 * 26 = 456976です

26文字より52文字の組み合わせが14倍以上多いため、データを保存するために、Urlを短くして、より少ないデータ転送でより多くの情報をネットワークに渡すことができます。

これが、https://www.youtube.com/watch?v = xXxxXxxXなどのURLを使用してyoutubeを表示する理由です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.