Czy w ścieżkach URL rozróżniana jest wielkość liter?


11

Adresy URL mojej witryny nie uwzględniają wielkości liter. Na przykład oba poniższe linki pokazują dokładnie tę samą stronę:

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

Jednak patrząc na stronę wordpress.org zauważyłem, że w adresach URL rozróżniana jest wielkość liter. Na przykład drugi link poniżej to strona błędu 404:

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

Myślę o tym, aby w adresach URL mojej witryny rozróżniane były wielkie i małe litery. Oprócz oczywistego problemu unikania powielania treści, jakie są zalety i wady posiadania rozróżniających wielkość liter adresów URL?

Aktualizacja

Wydaje się, że Google stosuje zasadę rozróżniania wielkości liter w odniesieniu do własnych adresów URL. Na przykład drugi link poniżej to 404:

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

Aktualizacja 2

Dziękuję za odpowiedzi. Postanowiłem skorzystać z porady wymienionej w zaakceptowanej odpowiedzi i w razie potrzeby wdrożyć 301 przekierowań. Ponieważ pracuję z WordPress, moje rozwiązanie w zakresie kodu wygląda następująco (na wypadek, gdyby ktoś był zainteresowany):

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' );

1
But wouldn't that result in duplicate content? – henrywrightNigdy nie musisz się martwić o duplikaty linków, jeśli Twoja witryna prawidłowo korzysta z linków kanonicznych i możesz mieć dostęp do 1 strony na milion sposobów i nigdy nie będzie to miało wpływu na duplikaty treści.
Simon Hayter

@bybe Jeśli masz dostęp do jednej strony na miliony sposobów, Googlebot nie będzie w stanie dobrze zaindeksować Twojej witryny. Dostęp do strony na kilka sposobów raczej nie zaszkodzi.
Stephen Ostermiller

Odpowiedzi:


6

Dwa z najczęściej używanych systemów plików systemu operacyjnego do udostępniania treści internetowych mają domyślnie bardzo różne ustawienia dotyczące rozróżniania wielkości liter w adresach URL. Niezależnie od tego, czy w adresach URL rozróżniana jest wielkość liter, prawdopodobnie używasz tej funkcji:

  • Microsoft IIS działający w systemie Windows - adresy URL bez rozróżniania wielkości liter - wyświetla tę samą treść bez względu na wielkie litery.
  • Serwer Apache HTTPD działający w systemie Linux - adresy URL z rozróżnianiem wielkości liter - powoduje błąd 404 polegający na nieprawidłowym pisaniu dużymi literami.

Moim zdaniem żadne ustawienie domyślne nie jest idealne:

  • Wyświetlanie tej samej zawartości niezależnie od wielkich liter sprawia, że ​​indeksowanie witryny jest trudniejsze. Wyszukiwarki uważają tę samą treść w wielu adresach URL za treść zduplikowaną.
  • Wyświetlanie stron błędów z nieprawidłowymi wielkimi literami nie jest przyjazne dla użytkownika. Podczas pisania użytkownicy zwykle nie zwracają uwagi na wielkie litery.

Idealnym rozwiązaniem byłoby wyświetlanie strony tylko wtedy, gdy adres URL jest poprawnie pisany wielką literą. W przypadku niepoprawnej wielkiej litery użytkownik powinien zostać przekierowany na 301 preferowaną wielkość liter. Można to osiągnąć na kilka sposobów:


1
Wydaje mi się, że jest to artefakt systemu DOS i Windows odbiegający od poprzedniego standardu rozróżniania wielkości liter w środowiskach uniksowych.
niedz.

1
To, czy w Apache rozróżniana jest wielkość liter dla żądań mapowanych do systemu plików, zależy od bazowego systemu plików, a nie od samego Apache. Jeśli uruchomisz Apache w systemie Windows, wówczas żądanie /iNdEx.HtMllub /InDeX.hTmloba zostaną zwrócone /index.html(pod warunkiem, że /index.htmljest to plik fizyczny w systemie plików).
MrWhite

1
W rzeczywistości wyglądałoby to tak samo w przypadku IIS .
MrWhite

1
Cóż, IIS zawsze działa w systemie Windows (AFAIK), więc w żądaniach systemu plików zawsze rozróżniana jest wielkość liter. Jednak wiele witryn będzie przekierowywać (przepisywać) adresy URL przez pewnego rodzaju kontroler frontowy - w tym przypadku żądanie prawdopodobnie nie jest mapowane na plik fizyczny w systemie plików, a zatem w adresie URL prawdopodobnie rozróżniana jest wielkość liter (chyba że aplikacja specjalnie to robi) -insensitive) - który jest w zasadzie taki sam jak Apache (w systemie Windows). (?)
MrWhite

2
Natknąłem się tutaj, badając ostatnie / zajęte pytanie „ Dlaczego w adresach URL rozróżniana jest wielkość liter? ”. Wygląda na to, że frazy takie jak „IIS nie rozróżnia wielkości liter” (wspomniane kilka razy w tym drugim wątku) są tak rozpowszechnione, że wydaje się, iż powszechnie uważa się, że adresy URL w IIS zawsze nie rozróżniają wielkości liter - przynajmniej takie wrażenie mam - co wcale tak nie jest.
MrWhite

4

Oto pozycja Google z zarchiwizowanej sesji czatu na żywo (link już nie żyje):

* Czy niespójne pisanie wielkimi literami adresów URL powoduje powielanie problemów z treścią i pogorszenie pozycji strony? Na przykład www.site.com/abc vs www.site.com/Abc. Na hostach Windows są to te same strony, ale różne strony na hostach Unix.

JohnMu: Cześć John, w oparciu o istniejące standardy, w adresach URL rozróżniana jest wielkość liter, więc tak, byłyby one postrzegane jako osobne adresy URL. Ponieważ treść w adresach URL jest taka sama, ogólnie to rozpoznamy i zatrzymamy tylko jeden z nich. Zalecamy jednak, aby wszystkie linki prowadziły do ​​jednej wersji adresu URL. Pamiętaj, że dotyczy to również plików robots.txt. *

Zespół IE zaleca wybranie konwencji dotyczącej obudowy plików i ścisłe jej przestrzeganie, ponieważ może to poprawić wydajność.


-2

RFC 3986 6.2.2.1 definiuje identyfikatory URI jako bez rozróżniania wielkości liter, więc nie jest dobrym pomysłem, aby rozróżniać wielkość liter, tak jak robi to wordpress.org.


Ale czy nie doprowadziłoby to do zduplikowania treści?

Właściwie nie, ponieważ wyszukiwarki również powinny działać bez rozróżniania wielkości liter.

Przypuszczam, że teraz pytanie brzmi, jak sprawdzić, czy wyszukiwarki widzą adresy URL z dużymi i małymi literami jako równoważne? Weźmy na przykład Google: wypróbuj google.com/Doodles i google.com/doodles

10
To RFC dotyczy tylko przypadku trzech części adresu URL. 1 - Protokół ( http://) - bez rozróżniania wielkości liter, normalizacja na małe litery. 2 - Nazwa hosta ( example.com) - bez rozróżniania wielkości liter, normalizacja na małe litery. 3. Znaki zakodowane w procentach ( %3F) - bez rozróżniania wielkości liter, normalizacja na wielkie litery. W pozostałej części adresu URL rozróżniana
Stephen Ostermiller
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.