Me di cuenta que
HTTP://STACKOVERFLOW.COM/QUESTIONS/ASK
y
http://stackoverflow.com/questions/ask
ambos funcionan bien, en realidad el anterior se convierte en minúsculas.
Creo que esto tiene sentido para el usuario.
Si miro a Google, esta URL funciona bien:
http://www.google.com/intl/en/about/corporate/index.html
pero este con "ACERCA DE" no funciona:
http://www.google.com/intl/en/ABOUT/corporate/index.html
¿La URL debe ser sensible a mayúsculas y minúsculas?
url
case-sensitive
Imageree
fuente
fuente
Respuestas:
De acuerdo con " HTML y URL " de W3, deberían:
fuente
Todos los " insensibles " están en negrita para facilitar la lectura.
Los nombres de dominio no distinguen entre mayúsculas y minúsculas según RFC 4343 . El resto de la URL se envía al servidor a través del método GET. Esto puede ser sensible a mayúsculas o minúsculas.
Tome esta página, por ejemplo, stackoverflow.com recibe GET string / preguntas / 7996919 / should-url-be-case-sensitive , enviando un documento HTML a su navegador. Stackoverflow.com no distingue entre mayúsculas y minúsculas porque produce el mismo resultado para / QUEStions / 7996919 / Should-url-be-case-sensitive .
Por otro lado, Wikipedia distingue entre mayúsculas y minúsculas, excepto el primer carácter del título. Las URL https://en.wikipedia.org/wiki/Case_sensitivity y https://en.wikipedia.org/wiki/case_sensitivity conducen al mismo artículo, pero https://en.wikipedia.org/wiki/CASE_SENSITIVITY devuelve 404
fuente
7996919
. La parte semántica de la URL solo está ahí para fines de SEO.Depende del sistema operativo de alojamiento. Los sitios alojados en Windows tienden a no distinguir entre mayúsculas y minúsculas, ya que el sistema de archivos subyacente no distingue entre mayúsculas y minúsculas. Los sitios alojados en sistemas de tipo Unix tienden a distinguir entre mayúsculas y minúsculas, ya que sus sistemas de archivos subyacentes suelen ser sensibles a mayúsculas y minúsculas. La parte del nombre de host de la URL siempre distingue entre mayúsculas y minúsculas, es el resto de la ruta la que varía.
fuente
La parte del nombre de dominio de una URL no distingue entre mayúsculas y minúsculas, ya que DNS ignora las mayúsculas
http://en.example.org/
y minúsculas:HTTP://EN.EXAMPLE.ORG/
ambas abren la misma página.La ruta se usa para especificar y quizás encontrar el recurso solicitado. Es sensible a mayúsculas y minúsculas, aunque algunos servidores lo pueden tratar como insensible a mayúsculas y minúsculas, especialmente aquellos basados en Microsoft Windows.
Si el servidor es sensible a mayúsculas y
http://en.example.org/wiki/URL
es correcto,http://en.example.org/WIKI/URL
ohttp://en.example.org/wiki/url
mostrará una página de error HTTP 404, a menos que estas URL apuntan a recursos válidos sí mismos.fuente
HTTP://www.EXAMPLE.com/
es equivalente ahttp://www.example.com/
. Se supone que los otros componentes de sintaxis genéricos distinguen entre mayúsculas y minúsculas, a menos que el esquema lo defina específicamente ".No soy fanático de encontrar artículos viejos, pero como esta fue una de las primeras respuestas a este problema en particular, sentí la necesidad de aclarar algo.
Como @Bhavin Shah responde que la parte del dominio de la url no distingue entre mayúsculas y minúsculas, por lo que
y
y
son todos iguales pero todo después de la parte del nombre de dominio se considera sensible a mayúsculas y minúsculas.
entonces...
y
son diferentes.
Nota: Estoy hablando "técnicamente" y no "literalmente" en muchos casos, la mayoría de los servidores están configurados para manejar estos elementos de la misma manera, pero es posible configurarlos para que NO se manejen de la misma manera.
Los diferentes servidores manejan esto de manera diferente y, en algunos casos, deben ser sensibles a mayúsculas y minúsculas. En muchos casos, los valores de la cadena de consulta están codificados (como los Id. De sesión o los datos codificados en Base64 que se pasan como un valor de cadena de consulta).
Entonces, para responder la pregunta, "los servidores" deberían ser sensibles a mayúsculas y minúsculas al tomar estos datos, la respuesta es "sí, definitivamente".
Por supuesto, no todo debe ser sensible a mayúsculas y minúsculas, pero el servidor debe saber qué es y cómo manejar esos casos.
El comentario de @Hart Simha básicamente dice lo mismo. Me lo perdí antes de publicar, así que quiero dar crédito donde se debe.
fuente
Mire la especificación aquí: sección 2.7.3 http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25#page-19
fuente
Considera lo siguiente:
https://www.example.com/createuser.php?name=Paul%20McCartney
En este ejemplo hipotético, un formulario HTML, utilizando el método GET, envía el parámetro "nombre" a un script PHP que crea una nueva cuenta de usuario.
Y lo que quiero decir con este ejemplo es que este parámetro GET debe ser sensible a mayúsculas y minúsculas para preservar la capitalización de "McCartney" (o, como otro ejemplo, para preservar "Walter d'Isney", ya que hay otras formas para que los nombres rompan las reglas usuales de mayúsculas).
Son casos como estos los que guían la recomendación del W3C de que el esquema y el host no distinguen entre mayúsculas y minúsculas, pero todo después de eso es potencialmente sensible a mayúsculas y minúsculas y se deja al servidor. Forzar la insensibilidad de mayúsculas y minúsculas por estándar haría que el ejemplo anterior sea incapaz de preservar el caso de la entrada del usuario pasada como un parámetro de consulta GET.
Pero lo que diría es que, aunque esta es necesariamente la letra de la ley para dar cabida a tales casos, el espíritu de la ley es que, cuando el caso es irrelevante, se comportan de manera insensible. Sin embargo, los estándares no pueden decirle dónde el caso es irrelevante porque, al igual que los ejemplos que he dado, depende del contexto.
(por ejemplo, el nombre de usuario de una cuenta probablemente se ve obligado a la insensibilidad a mayúsculas y minúsculas, ya que "User123" y "user123" son cuentas diferentes que pueden resultar confusas, incluso si su nombre real, como se indicó anteriormente, distingue entre mayúsculas y minúsculas).
A veces es relevante, la mayoría de las veces no lo es. Pero tiene que dejarse en manos del desarrollador del servidor / web para decidir estas cosas, y no se puede prescribir de manera estándar, ya que solo a ese nivel se podría conocer el contexto.
El esquema y el host no distinguen entre mayúsculas y minúsculas (lo que muestra la preferencia del estándar por la insensibilidad a mayúsculas y minúsculas, donde se puede prescribir universalmente). El resto depende de usted para decidir, ya que comprende mejor el contexto. Pero, como se ha discutido, probablemente debería, en el espíritu de la ley, dejar de ser insensible a los casos a menos que tenga una buena razón para no hacerlo.
fuente
Las URL deben ser insensibles a mayúsculas y minúsculas a menos que haya una buena razón por la que no lo sean.
Esto no es obligatorio (no es parte de un RFC) pero hace que la comunicación y el almacenamiento de URL sean mucho más confiables.
Si tengo dos páginas en un sitio web:
y
¿Cómo deberían diferir? Tal vez uno está escrito 'estilo de gritos' (mayúsculas), pero desde el punto de vista de IA, la distinción nunca debe hacerse por un cambio en el caso de la URL.
Además, es fácil implementar esto en Apache, solo utilícelo
CheckSpelling On
desde mod_Speling.fuente
Antigua pregunta, pero me tropecé aquí, así que, ¿por qué no intentarlo ya que la pregunta busca una perspectiva diferente y no una respuesta definitiva?
w3c puede tener sus recomendaciones, lo cual me importa mucho, pero quiero repensarlo ya que la pregunta está aquí.
¿Por qué w3c considera que los nombres de dominio no distinguen entre mayúsculas y minúsculas y deja algo después?
Estoy pensando que la razón es que la parte del dominio de la URL está escrita a mano por un usuario. Todo después de ser hipertexto será resuelto por la máquina (navegador y servidor en la parte posterior).
Las máquinas pueden manejar la insensibilidad a las mayúsculas y minúsculas mejor que los humanos (no el tipo técnico :)).
Pero la pregunta es solo porque las máquinas PUEDEN manejar eso, ¿debería hacerse de esa manera?
Quiero decir, ¿cuáles son los beneficios de nombrar y acceder a un recurso en
hereIsTheResource
vshereistheresource
?El lateral es muy ilegible que el caso de camello que es más legible. Legible para los humanos (incluido el tipo técnico).
Así que aquí están mis puntos:
Resource Path se encuentra en algún lugar en el medio de la estructura de programación y a veces está cerca de un usuario final detrás del navegador.
Su URL (excluyendo el nombre de dominio) no debe distinguir entre mayúsculas y minúsculas si se espera que sus usuarios la toquen o la escriban, etc. Debe desarrollar su aplicación para EVITAR que los usuarios escriban la ruta lo más posible.
Su URL (excluyendo el nombre de dominio) debe ser sensible a mayúsculas y minúsculas si sus usuarios nunca la escribirán a mano.
Conclusión
La ruta debe ser sensible a mayúsculas y minúsculas. Mis puntos están pesando hacia los caminos sensibles a mayúsculas y minúsculas.
fuente
Los caracteres de URL se convierten en código hexadecimal (si alguna vez ha notado que los espacios en las URL se muestran como% 20, etc.), y dado que las mayúsculas y minúsculas tienen valores hexadecimales diferentes, tiene mucho sentido que las URL distingan entre mayúsculas y minúsculas. Sin embargo, el espíritu de la pregunta parece ser el estándar y yo digo que no, pero lo son. Depende del desarrollador / proveedor dar cuenta de esto en su código si quieren que funcione independientemente de un usuario final.
fuente
Creo que esto y muchas de las respuestas en torno a lo que dice o no dice la especificación falta el punto de la pregunta. ¿Deberían ser sensibles a mayúsculas y minúsculas? Esa es una pregunta cargada realmente. Desde el punto de vista del usuario, la sensibilidad a las mayúsculas y minúsculas es un punto de dolor, no todo lo que sabe hace la diferencia. La cuestión de si los URI deberían o no ser, depende del contexto de la pregunta. Por flexibilidad técnica, sí, deberían serlo. Por usabilidad, no, no deberían serlo.
fuente
Preservación de casos
Las URL conservan mayúsculas y minúsculas entre el cliente y el servidor. Pero partes de las URL pueden o no ser sensibles a mayúsculas y minúsculas , dependiendo del servidor, por un par de razones.
Sensibilidad del caso
Las siguientes partes en negrita de las URL pueden distinguir entre mayúsculas y minúsculas, según el sitio o la configuración del servidor.
http: // www. ejemplo.com /abc/def.ghi?jkl=mno#pqr
usuario @ example.com
Razón fundamental
Las mayúsculas y minúsculas en las URL pueden tener varios usos. Principalmente:
Como desarrollador, creo que lo anterior a menudo se puede manejar de mejor manera, pero también entiendo que hay casos en los que una situación puede no permitir esto.
Por ejemplo, imagine un producto existente que requiere una gran cantidad de datos ubicados en la URL "GET", pero debe ser compatible con las longitudes máximas de URL de todos los principales servidores, navegadores y mecanismos de almacenamiento en caché / proxy. Para ajustar incluso una cadena de comando de longitud moderada (menos de 1,024 caracteres para algunos navegadores más antiguos), necesitaría usar todos los caracteres únicos seguros para URL que pueda (que es básicamente lo que es la codificación base64url).
En un mundo ideal
Es discutible si las URL deben ser sensibles a mayúsculas y minúsculas. Personalmente, creo que no deberían serlo, por simplicidad (aunque puede crear URL más largas, tenemos porcentajes de escape para manejar fácilmente los casos en los que debemos garantizar la preservación de los caracteres exactos, y hay formas de transferir datos que no sean directamente en la URL) .
Muchos parecen estar de acuerdo con el hecho de que las URL que no distinguen entre mayúsculas y minúsculas están explícitamente habilitadas para muchos sitios y servicios populares, con el fin de aumentar la usabilidad. El ejemplo más destacado es la parte del nombre de usuario de las direcciones de correo electrónico. La mayoría de los proveedores de correo electrónico ignorarán mayúsculas y minúsculas y, a veces, incluso puntos y otros símbolos (como "[email protected]" es lo mismo que "[email protected]"). Aunque los nombres de usuario de correo electrónico distinguen entre mayúsculas y minúsculas, según las especificaciones.
Sin embargo, el hecho es que a pesar de lo que yo u otros podríamos querer, este es el estado de cómo funcionan las cosas actualmente. Y si bien es posible una eventual transición mundial a un estándar de URL que no distinga entre mayúsculas y minúsculas, es probable que lleve bastante tiempo ya que la distinción entre mayúsculas y minúsculas se usa ampliamente en la web para diversos fines.
Mejores prácticas
En lo que respecta a las mejores prácticas, como usuario puede razonablemente seguir en minúsculas para la mayoría de las situaciones y esperar que las cosas funcionen. Las principales excepciones serían las URL que usan codificación basada en casos o rutas de documentos con equivalentes directos del sistema de archivos. Sin embargo, estas URL complejas suelen copiarse (o simplemente hacer clic) en lugar de escribirse manualmente.
Como desarrollador web, debe considerar mantener las URL tan insensibles a mayúsculas como sea posible. Aunque claramente hay algunas situaciones difíciles de evitar, según el contexto, como se señaló anteriormente.
fuente
No veo ningún uso o buena práctica detrás de las URL sensibles a mayúsculas y minúsculas. Es estúpido, apesta y debe evitarse en todo momento.
Solo para respaldar mi opinión, cuando alguien pregunta qué URL, ¿cómo podría explicar qué caracteres de la URL son mayúsculas o minúsculas? Eso no tiene sentido y nadie debería decirte lo contrario.
fuente
Para los sitios web alojados en un servidor Linux, la URL distingue entre mayúsculas y minúsculas. http://www.google.com/about y http://www.google.com/About serán redirigidos a diferentes ubicaciones. Mientras está en un servidor de Windows, la URL no distingue entre mayúsculas y minúsculas, como al nombrar una CARPETA y se redirigirá a la misma ubicación.
fuente
Es posible hacer URL no sensibles a mayúsculas y minúsculas
Hacer que Google.com..GOOGLE.com, etc.se dirija directamente a google.com
fuente