Perché l'URL non dovrebbe distinguere tra maiuscole e minuscole?
Capisco che possa sembrare una domanda retorica provocatoria (e "avvocato del diavolo"), ma penso che sia utile considerare. Il design di HTTP è che un "client", che comunemente chiamiamo "browser web", richiede dati al "web server".
Esistono molti, molti server Web diversi che vengono rilasciati. Microsoft ha rilasciato IIS con i sistemi operativi Windows Server (e altri, incluso Windows XP Professional). Unix ha pesi massimi come nginx e Apache, per non parlare delle offerte più piccole come l'httpd interno di OpenBSD, o il httpd o lighttpd. Inoltre, molti dispositivi compatibili con la rete hanno server Web integrati che possono essere utilizzati per configurare il dispositivo, inclusi i dispositivi con scopi specifici delle reti, come router (inclusi molti punti di accesso Wi-Fi e modem DSL) e altri dispositivi come stampanti o UPS (gruppi di continuità alimentati a batteria) che possono avere connettività di rete.
Quindi la domanda "Perché gli URL fanno distinzione tra maiuscole e minuscole?", Chiede: "Perché i server Web considerano l'URL come sensibile al maiuscolo / minuscolo?" E la vera risposta è: non lo fanno tutti. Almeno un web server, che è abbastanza popolare, in genere NON è sensibile al maiuscolo / minuscolo. (Il web server è IIS.)
Un motivo chiave per comportamenti diversi tra server Web diversi si riduce probabilmente a una questione di semplicità. Il modo più semplice per creare un server Web è quello di fare le cose nello stesso modo in cui il sistema operativo del computer / dispositivo individua i file. Molte volte, i server Web individuano un file per fornire una risposta. Unix è stato progettato attorno a computer di fascia alta, e quindi Unix ha fornito la desiderabile funzionalità di consentire lettere maiuscole e minuscole. Unix ha deciso di trattare maiuscole e minuscole come diverse perché, beh, sono diverse. Questa è la cosa semplice e naturale da fare. Windows ha una storia senza distinzione tra maiuscole e minuscole a causa del desiderio di supportare software già creato, e questa storia risale al DOS che semplicemente non supportava lettere minuscole, forse nel tentativo di semplificare le cose con computer meno potenti che utilizzavano meno memoria. Poiché questi sistemi operativi sono diversi, il risultato è che i server Web (versioni precedenti di) progettati semplicemente riflettono le stesse differenze.
Ora, con tutto questo background, ecco alcune risposte specifiche alle domande specifiche:
Quando gli URL sono stati progettati per la prima volta, perché la distinzione tra maiuscole e minuscole è diventata una funzionalità?
Perchè no? Se tutti i server Web standard non facessero distinzione tra maiuscole e minuscole, ciò indicherebbe che i server Web stavano seguendo una serie di regole specificate dallo standard. Semplicemente non vi era alcuna regola che affermasse che il caso dovesse essere ignorato. Il motivo per cui non esiste una regola è semplicemente che non c'era motivo per una tale regola. Perché preoccuparsi di inventare regole inutili?
Lo chiedo perché mi sembra (cioè un laico) che la distinzione tra maiuscole e minuscole sarebbe preferibile per prevenire errori inutili e semplificare una stringa di testo già complicata.
Gli URL sono stati progettati per l'elaborazione da parte delle macchine. Sebbene una persona possa digitare un URL completo in una barra degli indirizzi, questa non era una parte importante del design previsto. Il progetto previsto è che le persone seguano ("clicca") i collegamenti ipertestuali. Se i laici medi lo stanno facendo, a loro non importa se l'URL invisibile sia semplice o complicato.
Inoltre, esiste un reale scopo / vantaggio nell'avere un URL con distinzione tra maiuscole e minuscole (al contrario della stragrande maggioranza degli URL che puntano alla stessa pagina, indipendentemente dalla capitalizzazione)?
Il quinto punto numerato della risposta di William Hay menziona un vantaggio tecnico: gli URL possono essere un modo efficace per un browser Web di inviare un po 'di informazioni a un server Web, e possono essere incluse più informazioni se ci sono meno restrizioni, quindi una distinzione tra maiuscole e minuscole la restrizione ridurrebbe quante informazioni possono essere incluse.
Tuttavia, in molti casi, non esiste un vantaggio super convincente per la sensibilità del caso, il che è dimostrato dal fatto che IIS in genere non si preoccupa di esso.
In sintesi, il motivo più convincente è probabilmente la semplicità per coloro che hanno progettato il software del server Web, in particolare su una piattaforma con distinzione tra maiuscole e minuscole come Unix. (HTTP non è stato qualcosa che ha influenzato il design originale di Unix, poiché Unix è notevolmente più vecchio di HTTP.)