Чому б URL-адреса не була чутливою до регістру?
Я розумію, що це може виглядати як провокаційний (і "захисник диявола") риторичного питання, але я думаю, що це корисно розглянути. Конструкція HTTP полягає в тому, що "клієнт", якого ми зазвичай називаємо "веб-браузером", запитує дані "веб-сервера".
Випускається багато, багато різних веб-серверів. Microsoft випустила IIS з операційними системами Windows Server (та іншими, включаючи Windows XP Professional). У Unix є важкі ваги, такі як nginx та Apache, не кажучи вже про менші пропозиції, такі як внутрішній httpd OpenBSD, або thttpd, або lighttpd. Крім того, багато мережевих пристроїв мають вбудовані веб-сервери, які можна використовувати для налаштування пристрою, включаючи пристрої з цілями, характерними для мереж, як маршрутизатори (включаючи безліч точок доступу Wi-Fi та модеми DSL) та інші пристрої, такі як принтери або ДБЖ (акумуляторні батареї безперебійного живлення), які можуть мати мережеве підключення.
Тож питання "Чому URL-адреси залежать від регістру?", Запитує: "Чому веб-сервери ставляться до URL як до регістру?" І власне відповідь така: вони не всі так роблять. Принаймні один веб-сервер, який є досить популярним, як правило, НЕ чутливий до регістру. (Веб-сервер - IIS.)
Основна причина різної поведінки між різними веб-серверами, ймовірно, зводиться до простоти. Найпростіший спосіб зробити веб-сервер - це робити так само, як операційна система комп'ютера / пристрою розміщує файли. Багато разів веб-сервери знаходять файл, щоб надати відповідь. Unix був розроблений навколо комп'ютерів вищого класу, і тому Unix забезпечив бажану функціональність, дозволяючи великі та малі літери. Unix вирішив розглядати великі і малі регістри як різні, тому що, ну, вони різні. Це прямо, природно. Windows має історію нечутливості до регістру через бажання підтримувати вже створене програмне забезпечення, і ця історія повертається до DOS, який просто не підтримував малі літери, можливо, намагаючись спростити речі з менш потужними комп’ютерами, які використовують менше пам’яті. Оскільки ці операційні системи різні, результат полягає в тому, що просто розроблені (ранні версії) веб-сервери відображають однакові відмінності.
Тепер, з урахуванням цього досвіду, ось деякі конкретні відповіді на конкретні питання:
Коли вперше були розроблені URL-адреси, чому саме чутливість до регістру стала функцією?
Чому ні? Якщо всі стандартні веб-сервери не залежать від регістру, це вказує на те, що веб-сервери дотримуються набору правил, визначених стандартом. Просто не було правила, яке говорить про те, що цю справу потрібно ігнорувати. Причиною відсутності правила є просто те, що не було причини існування такого правила. Навіщо турбуватися складати непотрібні правила?
Я запитую це, тому що мені здається (наприклад, лайперсону), що нечутливість до випадку буде кращою для запобігання непотрібних помилок та спрощення і без того складного рядка тексту.
URL-адреси були розроблені для обробки машин. Хоча людина може ввести повну URL-адресу в адресний рядок, це не було основною частиною задуманого дизайну. Задумана конструкція полягає в тому, щоб люди дотримувались ("натискання на") гіперпосилань. Якщо це роблять середньостатистичні люди, то їм насправді все одно, чи невидима URL-адреса проста чи складна.
Також, чи є реальна мета / перевага мати URL-адресу, що відрізняється від регістру (на відміну від переважної більшості URL-адрес, які вказують на одну і ту ж сторінку, незалежно від великої літери)?
У п'ятій нумерованій точці відповіді Вільяма Хей згадується одна технічна перевага: URL-адреси можуть бути ефективним способом для веб-браузера надсилати трохи інформації на веб-сервер, і більше інформації може бути включена, якщо є менше обмежень, тому чутливість до справи обмеження зменшило б кількість інформації, яка може бути включена.
Однак у багатьох випадках не існує надто переконливої переваги щодо чутливості регістру, що підтверджується тим, що IIS зазвичай не турбується.
Підсумовуючи це, найбільш переконливою причиною є, мабуть, простота для тих, хто розробляв програмне забезпечення веб-сервера, особливо на платформі, що враховує регістр, як Unix. (HTTP не був чимось, що вплинуло на оригінальний дизайн Unix, оскільки Unix помітно старший ніж HTTP.)