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よりも著しく古いためです。)