¿Por qué la URL no distingue entre mayúsculas y minúsculas?
Entiendo que puede parecer un tipo de pregunta retórica provocativa (y "defensora del diablo"), pero creo que es útil considerarla. El diseño de HTTP es que un "cliente", que comúnmente llamamos un "navegador web", solicita datos al "servidor web".
Hay muchos, muchos servidores web diferentes que se lanzan. Microsoft ha lanzado IIS con sistemas operativos Windows Server (y otros, incluido Windows XP Professional). Unix tiene pesos pesados como nginx y Apache, sin mencionar ofertas más pequeñas como httpd, thttpd o lighttpd interno de OpenBSD. Además, muchos dispositivos con capacidad de red tienen servidores web integrados que se pueden usar para configurar el dispositivo, incluidos los dispositivos con fines específicos para redes, como enrutadores (incluidos muchos puntos de acceso Wi-Fi y módems DSL) y otros dispositivos como impresoras o UPS (unidades de fuente de alimentación ininterrumpida con respaldo de batería) que pueden tener conectividad de red.
Entonces, la pregunta, "¿Por qué las URL distinguen entre mayúsculas y minúsculas?", Es preguntar, "¿Por qué los servidores web tratan las URL como mayúsculas y minúsculas?" Y la respuesta real es: no todos hacen eso. Al menos un servidor web, que es bastante popular, generalmente NO distingue entre mayúsculas y minúsculas. (El servidor web es IIS).
Una razón clave para un comportamiento diferente entre diferentes servidores web probablemente se reduce a una cuestión de simplicidad. La manera simple de hacer un servidor web es hacer las cosas de la misma manera que la forma en que el sistema operativo de la computadora / dispositivo ubica los archivos. Muchas veces, los servidores web localizan un archivo para proporcionar una respuesta. Unix se diseñó alrededor de computadoras de gama alta, por lo que Unix proporcionó la funcionalidad deseable de permitir letras mayúsculas y minúsculas. Unix decidió tratar mayúsculas y minúsculas como diferentes porque, bueno, son diferentes. Esa es la cosa directa y natural que hacer. Windows tiene un historial de distinción entre mayúsculas y minúsculas debido a un deseo de admitir software ya creado, y este historial se remonta a DOS que simplemente no admitía letras minúsculas, posiblemente en un esfuerzo por simplificar las cosas con computadoras menos potentes que usan menos memoria. Dado que estos sistemas operativos son diferentes, el resultado es que los servidores web de diseño simple (versiones anteriores de) reflejan las mismas diferencias.
Ahora, con todo ese trasfondo, aquí hay algunas respuestas específicas a las preguntas específicas:
Cuando se diseñaron las URL por primera vez, ¿por qué se hizo distinción entre mayúsculas y minúsculas?
Por qué no? Si todos los servidores web estándar no distinguen entre mayúsculas y minúsculas, eso indicaría que los servidores web estaban siguiendo un conjunto de reglas especificadas por la norma. Simplemente no había una regla que diga que el caso debe ser ignorado. La razón por la que no hay una regla es simplemente que no había razón para que existiera dicha regla. ¿Por qué molestarse en inventar reglas innecesarias?
Pregunto esto porque me parece (es decir, un laico) que se preferiría la mayúsculas y minúsculas para evitar errores innecesarios y simplificar una cadena de texto ya complicada.
Las URL fueron diseñadas para que las máquinas las procesen. Aunque una persona puede escribir una URL completa en una barra de direcciones, esa no fue una parte importante del diseño previsto. El diseño previsto es que la gente seguiría ("haga clic en") hipervínculos. Si la gente promedio está haciendo eso, entonces realmente no les importa si la URL invisible es simple o complicada.
Además, ¿existe un propósito / ventaja real de tener una URL que distinga entre mayúsculas y minúsculas (a diferencia de la gran mayoría de las URL que apuntan a la misma página sin importar las mayúsculas)?
El quinto punto numerado de la respuesta de William Hay menciona una ventaja técnica: las URL pueden ser una forma efectiva para que un navegador web envíe un poco de información a un servidor web, y se puede incluir más información si hay menos restricciones, por lo que se distingue entre mayúsculas y minúsculas. la restricción reduciría la cantidad de información que se puede incluir.
Sin embargo, en muchos casos, no hay un beneficio súper convincente para la sensibilidad a mayúsculas y minúsculas, lo que se demuestra por el hecho de que IIS generalmente no se molesta con él.
En resumen, la razón más convincente es probablemente la simplicidad para quienes diseñaron el software del servidor web, particularmente en una plataforma sensible a mayúsculas y minúsculas como Unix. (HTTP no fue algo que influyó en el diseño original de Unix, ya que Unix es notablemente más antiguo que HTTP).