eu percebi isso
HTTP://STACKOVERFLOW.COM/QUESTIONS/ASK
e
http://stackoverflow.com/questions/ask
ambos funcionam bem - na verdade, o anterior é convertido para minúsculas.
Eu acho que isso faz sentido para o usuário.
Se eu olhar o Google, esse URL funcionará bem:
http://www.google.com/intl/en/about/corporate/index.html
mas este com "SOBRE" não está funcionando:
http://www.google.com/intl/en/ABOUT/corporate/index.html
O URL deve diferenciar maiúsculas de minúsculas?
url
case-sensitive
Imageree
fonte
fonte
Respostas:
De acordo com " HTML e URLs " do W3, eles deveriam:
fonte
Todos os " insensíveis " estão em negrito para facilitar a leitura.
Os nomes de domínio não diferenciam maiúsculas de minúsculas, de acordo com a RFC 4343 . O restante da URL é enviado ao servidor através do método GET. Isso pode fazer distinção entre maiúsculas e minúsculas ou não.
Por exemplo, nesta página, o stackoverflow.com recebe GET string / questions / 7996919 / deve diferenciar maiúsculas de minúsculas , enviando um documento HTML para o navegador. Stackoverflow.com não faz distinção entre maiúsculas e minúsculas, porque produz o mesmo resultado para / QUEStions / 7996919 / Deve ser sensível a maiúsculas e minúsculas .
Por outro lado, a Wikipedia diferencia maiúsculas de minúsculas, exceto o primeiro caractere do título. Os URLs https://en.wikipedia.org/wiki/Case_sensitivity e https://en.wikipedia.org/wiki/case_sensitivity levam ao mesmo artigo, mas https://en.wikipedia.org/wiki/CASE_SENSITIVITY retorna 404
fonte
7996919
. A parte semântica da URL está lá apenas para fins de SEO.Depende do sistema operacional de hospedagem. Os sites hospedados no Windows tendem a não fazer distinção entre maiúsculas e minúsculas, pois o sistema de arquivos subjacente não faz distinção entre maiúsculas e minúsculas. Os sites hospedados em sistemas do tipo Unix tendem a fazer distinção entre maiúsculas e minúsculas, pois seus sistemas de arquivos subjacentes geralmente diferenciam maiúsculas de minúsculas. A parte do nome do host da URL sempre diferencia maiúsculas de minúsculas; o resto do caminho varia.
fonte
A parte do nome de domínio de uma URL não diferencia maiúsculas de minúsculas, pois o DNS ignora maiúsculas
http://en.example.org/
e minúsculas: eHTTP://EN.EXAMPLE.ORG/
ambas abrem a mesma página.O caminho é usado para especificar e talvez encontrar o recurso solicitado. Faz distinção entre maiúsculas e minúsculas, embora possa ser tratado como sem distinção entre maiúsculas e minúsculas por alguns servidores, especialmente aqueles baseados no Microsoft Windows.
Se o servidor faz distinção entre maiúsculas e minúsculas e
http://en.example.org/wiki/URL
está correto, entãohttp://en.example.org/WIKI/URL
ouhttp://en.example.org/wiki/url
exibirá uma página de erro HTTP 404, a menos que esses URLs apontem para recursos válidos.fonte
HTTP://www.EXAMPLE.com/
é equivalente ahttp://www.example.com/
. Os outros componentes genéricos da sintaxe são considerados sensíveis a maiúsculas e minúsculas, a menos que especificamente definidos de outra forma pelo esquema. "Não sou fã de artigos antigos, mas como essa foi uma das primeiras respostas para esse problema em particular, senti a necessidade de esclarecer alguma coisa.
Como a resposta do @Bhavin Shah afirma que a parte do domínio do URL não diferencia maiúsculas de minúsculas,
e
e
são todos iguais, mas tudo depois da parte do nome de domínio é considerado sensível a maiúsculas e minúsculas.
tão...
e
são diferentes.
Nota: estou falando "tecnicamente" e não "literalmente" em muitos casos, na maioria dos casos, os servidores são configurados para lidar com esses itens da mesma forma, mas é possível configurá-los para que NÃO sejam tratados da mesma forma.
Servidores diferentes lidam com isso de maneira diferente e, em alguns casos, precisam ser sensíveis a maiúsculas e minúsculas. Em muitos casos, os valores de sequência de consulta são codificados (como IDs de sessão ou dados codificados em Base64 passados como um valor de sequência de consulta) Esses itens diferenciam maiúsculas de minúsculas por natureza e, portanto, o servidor precisa diferenciar maiúsculas de minúsculas ao manipulá-los.
Portanto, para responder à pergunta, os servidores "deveriam" fazer distinção entre maiúsculas e minúsculas ao coletar esses dados, a resposta é "sim, definitivamente".
É claro que nem tudo precisa fazer distinção entre maiúsculas e minúsculas, mas o servidor deve estar ciente do que é e como lidar com esses casos.
O comentário de @Hart Simha diz basicamente a mesma coisa. Perdi antes de publicar, então quero dar crédito onde o crédito é devido.
fonte
Veja a especificação aqui: seção 2.7.3 http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25#page-19
fonte
Considere o seguinte:
https://www.example.com/createuser.php?name=Paul%20McCartney
Neste exemplo hipotético, um formulário HTML - usando o método GET - envia o parâmetro "name" para um script PHP que cria uma nova conta de usuário.
E o argumento que estou enfatizando neste exemplo é que esse parâmetro GET precisa ser sensível a maiúsculas e minúsculas para preservar a capitalização de "McCartney" (ou, como outro exemplo, preservar "Walter d'Isney", pois existem outras maneiras. para que os nomes violem as regras usuais de capitalização).
São casos como esses que orientam a recomendação do W3C de que o esquema e o host não diferenciam maiúsculas de minúsculas, mas tudo depois disso é potencialmente sensível a maiúsculas e minúsculas - e é deixado para o servidor. Forçar a distinção entre maiúsculas e minúsculas por padrão tornaria o exemplo acima incapaz de preservar o caso de entrada do usuário transmitida como um parâmetro de consulta GET.
Mas o que eu diria é que, embora essa seja necessariamente a letra da lei para acomodar esses casos, o espírito da lei é que, quando o caso é irrelevante, se comporta de maneira insensível ao caso. Os padrões, no entanto, não podem dizer onde o caso é irrelevante porque, como nos exemplos que dei, é algo dependente do contexto.
(por exemplo, um nome de usuário da conta provavelmente é melhor forçado a não diferenciar maiúsculas e minúsculas - como "Usuário123" e "usuário123" sendo contas diferentes podem ser confusas - mesmo que seu nome real, como acima, seja mais sensível a maiúsculas e minúsculas.)
Às vezes é relevante, na maioria das vezes não é. Mas deve ser deixado ao servidor / desenvolvedor da web decidir essas coisas - e não pode ser prescrito por padrão -, pois somente nesse nível o contexto poderia ser conhecido.
O esquema e o host não diferenciam maiúsculas de minúsculas (o que mostra a preferência do padrão pela diferenciação de maiúsculas e minúsculas, onde pode ser universalmente prescrito). O resto fica por sua conta, pois você entende melhor o contexto. Mas, como foi discutido, você provavelmente deve, no espírito da lei, usar como padrão a insensibilidade ao caso, a menos que tenha um bom motivo para não fazê-lo.
fonte
Os URLs não diferenciam maiúsculas de minúsculas, a menos que exista uma boa razão pela qual não o sejam.
Isso não é obrigatório (não faz parte de uma RFC), mas torna a comunicação e o armazenamento de URLs muito mais confiáveis.
Se eu tiver duas páginas em um site:
e
Como eles devem diferir? Talvez alguém esteja escrito 'estilo de gritar' (caps) - mas, do ponto de vista da IA, a distinção nunca deve ser feita por uma alteração no caso da URL.
Além disso, é fácil implementar isso no Apache - basta usar a
CheckSpelling On
partir de mod_Speling.fonte
Pergunta antiga, mas eu tropecei aqui, então por que não tentar? Uma vez que a pergunta está buscando várias perspectivas e não uma resposta definitiva.
O w3c pode ter suas recomendações - das quais me importo muito -, mas quero repensar, já que a questão está aqui.
Por que o w3c considera que os nomes de domínio não fazem distinção entre maiúsculas e minúsculas e deixam algo depois sem diferenciação de maiúsculas e minúsculas?
Eu estou pensando que a lógica é que a parte do domínio da URL é digitada manualmente por um usuário. Tudo após o hipertexto será resolvido pela máquina (navegador e servidor na parte de trás).
As máquinas podem lidar melhor com a insensibilidade do caso do que com os humanos (não do tipo técnico :)).
Mas a questão é apenas porque as máquinas PODEM lidar com isso, devem ser feitas dessa maneira?
Quero dizer, quais são os benefícios de nomear e acessar um recurso em
hereIsTheResource
vshereistheresource
?A lateral é muito ilegível que a do camelo, que é mais legível. Legível para seres humanos (incluindo o tipo técnico).
Então, aqui estão os meus pontos: -
O Caminho do Recurso fica em algum lugar no meio da estrutura de programação e, por vezes, fica perto de um usuário final atrás do navegador.
Seu URL (excluindo o nome do domínio) não faz distinção entre maiúsculas e minúsculas, caso se espere que os usuários o digitem, etc. Você deve desenvolver seu aplicativo para EVITAR que os usuários digitem o caminho o máximo possível.
Seu URL (excluindo o nome do domínio) deve diferenciar maiúsculas de minúsculas se seus usuários nunca o digitarem manualmente.
Conclusão
O caminho deve fazer distinção entre maiúsculas e minúsculas. Meus pontos estão pesando para os caminhos sensíveis a maiúsculas e minúsculas.
fonte
Os caracteres de URL são convertidos em código hexadecimal (se você já notou espaços nos URLs sendo exibidos como% 20 etc.) e, como as letras maiúsculas e minúsculas têm valores hexadecimais diferentes, faz todo o sentido que os URLs sejam definitivamente mais sensíveis a maiúsculas e minúsculas. No entanto, o espírito da pergunta parece ser o padrão e eu digo não, mas eles são. Cabe ao desenvolvedor / provedor responder por isso em seu código, se quiser que ele funcione independentemente do usuário final.
fonte
Penso que esta e muitas das respostas sobre o que as especificações dizem ou não estão perdendo o objetivo da pergunta. Eles devem diferenciar maiúsculas de minúsculas? Essa é uma pergunta realmente carregada. Do ponto de vista de um usuário, a distinção entre maiúsculas e minúsculas é um ponto problemático, nem todos sabem que faz diferença. A questão de saber se os URIs devem ou não ser, depende do contexto da pergunta. Para flexibilidade técnica, sim, deveriam ser. Para usabilidade, não, eles não deveriam ser.
fonte
Preservação de caso
URLs preservam maiúsculas e minúsculas , entre cliente e servidor. Mas partes de URLs podem ou não fazer distinção entre maiúsculas e minúsculas , dependendo do servidor, por alguns motivos.
Sensibilidade do caso
As seguintes partes em negrito dos URLs podem fazer distinção entre maiúsculas e minúsculas, dependendo do site e / ou da configuração do servidor.
http: // www. example.com /abc/def.ghi?jkl=mno#pqr
usuário @ example.com
Fundamentação
A distinção entre maiúsculas e minúsculas nos URLs pode ter vários usos. Principalmente:
Como desenvolvedor, acredito que o acima pode ser tratado de maneiras melhores, mas também entendo que há casos em que uma situação pode não permitir isso.
Por exemplo, imagine um produto existente que exija muitos dados inseridos no URL "GET", mas ele deve ser compatível com os comprimentos máximos de URL de todos os principais servidores, navegadores e mecanismos de cache / proxy. Para ajustar até mesmo uma cadeia de comandos de tamanho moderado (abaixo de 1.024 caracteres para alguns navegadores mais antigos), você precisa usar todos os caracteres seguros para URL exclusivos que puder (que é basicamente o que é a codificação base64url).
Em um mundo ideal
Se os URLs devem ou não fazer distinção entre maiúsculas e minúsculas é discutível. Pessoalmente, acredito que não devem ser, por simplicidade (embora possa criar URLs mais longos, temos escapes percentuais para lidar facilmente com casos em que devemos garantir a preservação de caracteres exatos e existem maneiras de transferir dados além do correto no URL) .
Muitos parecem concordar com base no fato de que URLs sem distinção entre maiúsculas e minúsculas são ativadas explicitamente para muitos sites e serviços populares, a fim de aumentar a usabilidade. O exemplo mais destacado é a parte do nome de usuário dos endereços de email. A maioria dos provedores de email ignora letras maiúsculas e minúsculas e, às vezes, até pontos e outros símbolos (como "[email protected]" sendo o mesmo que "[email protected]"). Mesmo que os nomes de usuário de e-mail sejam sensíveis a maiúsculas e minúsculas por padrão, de acordo com as especificações.
No entanto, o fato é que, apesar do que eu ou outros possamos querer, esse é o estado de como as coisas funcionam atualmente. E, embora uma eventual transição mundial para um padrão de URL que não diferencia maiúsculas de minúsculas seja certamente possível, provavelmente levaria um longo tempo, já que a distinção entre maiúsculas e minúsculas é atualmente usada extensivamente na Web para vários propósitos.
Melhores Práticas
No que diz respeito às práticas recomendadas, como usuário, você pode razoavelmente ficar em minúsculas na maioria das situações e esperar que as coisas funcionem. As principais exceções seriam URLs que usam codificação baseada em casos ou caminhos de documentos com equivalentes diretos ao sistema de arquivos. No entanto, esses URLs complexos geralmente são copiados e colados (ou simplesmente clicados) em vez de digitados manualmente.
Como desenvolvedor da web, considere manter os URLs sem distinção entre maiúsculas e minúsculas quanto possível. Embora haja claramente algumas situações difíceis de evitar, dependendo do contexto, conforme observado acima.
fonte
Não vejo utilidade ou boa prática por trás de URLs que diferenciam maiúsculas de minúsculas. É estúpido, é péssimo e deve ser evitado o tempo todo.
Apenas para fazer backup da minha opinião, quando alguém pergunta qual URL, como você pode explicar quais caracteres do URL são Maiúsculas ou Minúsculas? Isso é um absurdo e ninguém deveria lhe dizer o contrário.
fonte
Para sites hospedados em um servidor Linux, o URL diferencia maiúsculas de minúsculas. http://www.google.com/about e http://www.google.com/About serão redirecionados para diferentes locais. Enquanto estiver no Windows Server, o URL não diferencia maiúsculas de minúsculas, como nomear uma PASTA e será redirecionado para o mesmo local.
fonte
É possível criar URLs não sensíveis a maiúsculas
Tornando o Google.com..GOOGLE.com etc direto para google.com
fonte