Czy moje adresy URL powinny być pisane małymi literami?

17

Zgodnie z tym blogiem („Zrozumienie procedur składni adresów URL przyjaznych SEO”) powinienem to zmienić

http://example.com/Hello-Dolly

Do

http://example.com/hello-dolly

Podane powody to:

  • W adresach URL rozróżniana jest wielkość liter
  • uprości wszelkie wrażliwe na wielkość liter raporty SEO i analityczne

Zgodnie z tym GIF- em, który znalazłem w artykule Wikipedii na temat normalizacji adresów URL , powinienem konwertować moje adresy URL z wielkich liter na wszystkie małe litery.

Używam jednak ASP.NET MVC i domyślnie moje adresy URL mają taką strukturę ( CamelCase ):

http://www.example.com/Controller/Action/Parameter

http://www.example.com/Kategorie/Lista/Rowery

Mam odtłuszczonego przez RFC1738 , ale nie widać żadnych ostatecznych odpowiedzi do tego.

Czy powinienem zrobić wszystko, aby zmusić ramę do zmiany wszystkiego na małe litery? Dlaczego Microsoft zdecydował się na zaprojektowanie takiego frameworku, skoro wszyscy mówią mi, żeby używać małych liter?

Rowan Freeman
źródło
3
Świetne pytanie i wspaniała prezentacja zapytania dla społeczności tutaj na webmasters.stackexchange.com! Naprawdę również odrobiłeś pracę domową w tej kwestii, zanim zapytałeś!
dvnkiss,
Wystąpił problem polegający na tym, że serwer proxy zmienił żądany adres URL na małe litery - i spowodował błąd 404 na żądanie do serwera Linux, który hostował stronę w moim podkatalogu ./SO/ (gdzie umieszczam przykłady przepływu stosu). Jest to przypadek użycia, w którym małe litery mają znaczenie (możesz argumentować, że serwer proxy był źle zakodowany, ale to prawdziwe życie ...)
Floris

Odpowiedzi:

10

Should I go out of my way to force the framework to change everything to lower case?

Nie, to nie jest konieczne. Systemy operacyjne Windows nie rozróżniają wielkości liter, w tym ich systemy operacyjne i aplikacje szkieletowe. W systemach operacyjnych Linux / Unix rozróżniana jest wielkość liter.

Aplikacje internetowe (np. Przeglądarki) powinny normalizować adresy URL, jak opisano w sekcji 6 RFC 3986 :

Jedną z najczęstszych operacji na identyfikatorach URI jest proste porównanie: ustalenie, czy dwa identyfikatory URI są równoważne, bez korzystania z identyfikatorów URI w celu uzyskania dostępu do ich odpowiednich zasobów. Porównanie jest wykonywane za każdym razem, gdy uzyskuje się dostęp do pamięci podręcznej odpowiedzi, przeglądarka sprawdza swoją historię w celu pokolorowania łącza lub parser XML przetwarza znaczniki w przestrzeni nazw. Pająki i mechanizmy indeksujące często stosują szeroko zakrojoną normalizację przed porównywaniem identyfikatorów URI w celu przycinania przestrzeni wyszukiwania lub ograniczenia powielania akcji żądań i przechowywania odpowiedzi.

Ponieważ bez wątpienia będziesz używać serwera Windows, żądane adresy URL i identyfikatory URI zostaną zwrócone do aplikacji klienckich.


W odniesieniu do wyszukiwarek, jak podano w RFC powyżej oraz w linku do Wikipedii na temat normalizacji adresów URL :

Wyszukiwarki stosują normalizację adresów URL, aby przypisać znaczenie stronom internetowym i ograniczyć indeksowanie zduplikowanych stron.

A jako źródła takie jak ten raport na ten temat:

Niedawno Google zaczęło lepiej rozumieć, że /page1.html i /Page1.html to tylko dwa wystąpienia tej samej treści.


Why did Microsoft choose to design their framework like this if everybody is telling me to use lowercase?

Jest kompatybilny z ich systemem operacyjnym i technicznie nie jest niepoprawny zgodnie z RFC. Mają też własny sposób robienia rzeczy, co pozwala webmasterom zgadywać :-)

dan
źródło
1
Świetna odpowiedź, zamierzałem zamieścić odpowiedź bardzo podobną, ale pobiłaś mnie! „Dlaczego Microsoft zdecydował się na zaprojektowanie takiego frameworka, skoro wszyscy mówią mi, że mam używać małych liter? - Uwielbiam to. Odkąd pamiętam, Microsoft miał własne środki, by „zmusić” programistów / webmasterów do przestrzegania sztywnych reguł!
dvnkiss,
4

Nie wiem, czy powinieneś to zmienić, ale powinieneś być konsekwentny.

Patrzyłem na to kilka lat temu i standardem Google było to, że sprawa przed TLD nie ma znaczenia, ale po tym, jak to robi.

W tym czasie pracowałem nad nieczynną stroną o nazwie BusinessForPhotographers.com; najwyraźniej jest to konsekwentnie traktowane jako bez rozróżniania wielkości liter.

Po .comjest inna sprawa. Widoki Google /Great-Articleróżnią się od /great-article, nawet jeśli serwer kieruje je do tego samego miejsca.

Może to wpłynąć na kanonizację i problemy z powielaniem treści. Myślę, że najbezpieczniejszą metodą byłoby wymuszenie przekierowania 301 do właściwej wersji.

Chociaż może to wydawać się bezcelowe myśleć o usłudze takiej jak YouTube, to /A1B2C3ten sam adres URL jak /a1b2c3?

Nie w oczach Google.

adam-asdf
źródło
3

W ścieżkach URI rozróżniana jest wielkość liter (jeśli nie zdefiniowano inaczej). Patrz standard URI STD 66, sekcja 6.2.2.1. Normalizacja wielkości liter :

Zakłada się, że w innych ogólnych składnikach składni rozróżniana jest wielkość liter, chyba że schemat wyraźnie określa inaczej

Jeśli duże litery w ścieżkach URI HTTP byłyby problemem dla niektórych użytkowników, Wikipedia byłaby dla nich zepsuta. Te dwa identyfikatory URI HTTP (różniące się tylko małymi oi wielkimi literami O) prowadzą do różnych stron:

Więc nie, nie musisz zmieniać swoich identyfikatorów URI.

Jeśli to możliwe (jeśli nie korzystasz ze sprawy, jak robi to Wikipedia), dobrą praktyką byłoby zezwolenie na wszystkie warianty przypadków i przekierowanie 301 na wariant kanoniczny.

unor
źródło