Os caminhos de URL diferenciam maiúsculas de minúsculas?


11

No momento, os URLs do meu site não diferenciam maiúsculas de minúsculas. Por exemplo, os dois links a seguir mostram exatamente a mesma página:

  • http://example.com/about
  • http://example.com/About

No entanto, dando uma olhada no site wordpress.org, notei que os URLs diferenciam maiúsculas de minúsculas. Por exemplo, o segundo link abaixo é uma página de erro 404:

  • http://wordpress.org/about
  • http://wordpress.org/About

Minha intenção é tornar os URLs do meu site sensíveis a maiúsculas e minúsculas. Além da questão óbvia de evitar conteúdo duplicado, quais são os prós e os contras de ter URLs que diferenciam maiúsculas de minúsculas?

Atualizar

O Google parece operar uma política de URL que diferencia maiúsculas de minúsculas em seus próprios URLs. Por exemplo, o segundo link abaixo é um 404:

  • http://google.com/doodles
  • http://google.com/Doodles

Atualização 2

Obrigado por suas respostas. Decidi seguir os conselhos mencionados na resposta aceita e implementar os redirecionamentos 301, quando necessário. Como estou trabalhando com o WordPress, minha solução de código é a seguinte (caso alguém esteja interessado):

function force_lowercase_urls() {

    if ( is_admin() )
        return;

    if ( preg_match( '/[A-Z]/', $_SERVER['REQUEST_URI'] ) ) {

        wp_redirect( strtolower( $_SERVER['REQUEST_URI'] ), 301 );
        exit();
    }

}
add_action( 'init', 'force_lowercase_urls' );

11
But wouldn't that result in duplicate content? – henrywrightVocê nunca precisará se preocupar com links duplicados se o site usar links canônicos corretamente e você puder acessar 1 página de um milhão de maneiras e nunca ser afetado por conteúdo duplicado.
Simon Hayter

@bybe Se você tiver uma página acessada de várias maneiras, o Googlebot não poderá rastrear bem o seu site. Ter uma página acessada de várias maneiras provavelmente não fará mal.
Stephen Ostermiller

Respostas:


6

Dois dos sistemas de arquivos do sistema operacional mais amplamente utilizados para veicular conteúdo da Web têm configurações muito diferentes para diferenciar maiúsculas de minúsculas de URLs por padrão. Se seus URLs diferenciam maiúsculas de minúsculas é provavelmente uma função da qual você está usando:

  • O Microsoft IIS em execução no Windows - URLs que não diferenciam maiúsculas de minúsculas - mostra o mesmo conteúdo, independentemente da capitalização.
  • O Apache HTTPD Server em execução no Linux - URLs que diferenciam maiúsculas de minúsculas - fornece um erro 404 não encontrado por letras maiúsculas e minúsculas incorretas.

Na minha opinião, nenhum dos padrões é ideal:

  • Mostrar o mesmo conteúdo, independentemente da capitalização, torna o rastreamento do seu site mais difícil. Os mecanismos de pesquisa consideram o mesmo conteúdo em vários URLs como conteúdo duplicado.
  • Mostrar páginas de erro para letras maiúsculas incorretas não é amigável. Os usuários geralmente não estão preocupados com letras maiúsculas quando digitam.

A solução ideal seria mostrar a página apenas quando o URL estiver em maiúsculas corretamente. Para capitalização incorreta, o usuário deve ser redirecionado 301 para a capitalização preferida. Existem algumas maneiras de fazer isso:


11
Eu sinto que esse é um artefato do DOS e do Windows que se desvia do padrão anterior de diferenciação de maiúsculas e minúsculas que temos nos ambientes Unix.
Sun

11
Se o Apache faz distinção entre maiúsculas e minúsculas para solicitações mapeadas para o sistema de arquivos depende do sistema de arquivos subjacente, não do próprio Apache. Se estiver executando o Apache no Windows, solicite /iNdEx.HtMlou /InDeX.hTmlambos retornarão /index.html(desde que /index.htmlseja um arquivo físico no sistema de arquivos).
MrWhite 23/02

11
De fato, isso parece ser o mesmo para o IIS .
MrWhite 24/02

11
Bem, o IIS sempre é executado no Windows (AFAIK), portanto, as solicitações do sistema de arquivos sempre diferenciam maiúsculas de minúsculas. No entanto, muitos sites encaminham (reescrevem) URLs através de algum tipo de controlador frontal - nesse caso, a solicitação provavelmente não é mapeada para um arquivo físico no sistema de arquivos e, portanto, a URL faz distinção entre maiúsculas e minúsculas (a menos que o aplicativo especifique o caso) - insensível) - que é basicamente o mesmo que o Apache (quando executado no Windows). (?)
MrWhite 24/02

2
Na verdade, eu tropecei por aqui enquanto pesquisava a pergunta recente / ocupada " Por que os URLs diferenciam maiúsculas de minúsculas? ". Parece que frases como "IIS não diferenciam maiúsculas de minúsculas" (mencionadas várias vezes nesse outro segmento) são tão difundidas que parece comum que os URLs no IIS sempre diferenciam maiúsculas de minúsculas - pelo menos é a impressão que eu estava tendo - o que não parece ser o caso.
MrWhite

4

Aqui está a posição do Google em uma sessão de bate-papo ao vivo arquivada (o link agora está desativado):

* A capitalização inconsistente de URLs causa problemas de conteúdo duplicado e diluição do page rank? Por exemplo, www.site.com/abc vs www.site.com/Abc. Nos hosts Windows, estas são a mesma página, mas são páginas diferentes nos hosts Unix.

JohnMu: Olá John, com base nos padrões existentes, os URLs diferenciam maiúsculas de minúsculas; portanto, eles seriam vistos como URLs separados. Como o conteúdo dos URLs é o mesmo, geralmente reconhecemos isso e mantemos apenas um deles. No entanto, recomendamos que você tente manter todos os links em uma versão do URL. Lembre-se de que isso também se aplica aos arquivos robots.txt. *

A equipe do IE recomenda escolher uma convenção de inclusão de arquivo e segui-la estritamente , pois pode melhorar o desempenho.


-2

O RFC 3986 6.2.2.1 define URIs como não diferencia maiúsculas de minúsculas, portanto, não é uma boa ideia torná-las com distinção entre maiúsculas e minúsculas, como o wordpress.org.


Mas isso não resultaria em conteúdo duplicado?

Na verdade não, porque os mecanismos de pesquisa também devem funcionar sem distinção entre maiúsculas e minúsculas.

Suponho que a pergunta agora é como descobrir se os mecanismos de pesquisa veem URLs superiores e inferiores como equivalentes? Tomemos o Google por exemplo: tente google.com/Doodles e google.com/doodles

10
Esse RFC aborda apenas o caso de três partes da URL. 1 - O protocolo ( http://) - não diferencia maiúsculas de minúsculas, normaliza para minúsculas. 2 - O nome do host ( example.com) - não diferencia maiúsculas de minúsculas, normaliza para minúsculas. 3. Caracteres codificados em porcentagem ( %3F) - não diferenciam maiúsculas de minúsculas, normalizam para maiúsculas. O restante da URL geralmente faz
distinção entre
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.