zauważyłem to
HTTP://STACKOVERFLOW.COM/QUESTIONS/ASK
i
http://stackoverflow.com/questions/ask
oba działają dobrze - w rzeczywistości poprzedni jest konwertowany na małe litery.
Myślę, że ma to sens dla użytkownika.
Jeśli spojrzę na Google, ten adres URL działa dobrze:
http://www.google.com/intl/en/about/corporate/index.html
ale ten z „ABOUT” nie działa:
http://www.google.com/intl/en/ABOUT/corporate/index.html
Czy w adresie URL powinna być rozróżniana wielkość liter?
url
case-sensitive
Imageree
źródło
źródło
Odpowiedzi:
Zgodnie z „ HTML i adresy URL ” W3 powinny:
źródło
Wszystkie „ niewrażliwe ” są pogrubione dla czytelności.
Nazwy domen nie rozróżniają wielkości liter zgodnie z RFC 4343 . Reszta adresu URL jest wysyłana do serwera za pomocą metody GET. W tym może być rozróżniana wielkość liter lub nie.
Weźmy na przykład tę stronę, stackoverflow.com odbiera ciąg GET / pytania / 7996919 / rozróżnia wielkość liter , wysyłając dokument HTML do przeglądarki. Stackoverflow.com nie rozróżnia wielkości liter, ponieważ daje ten sam wynik dla / QUEStions / 7996919 / rozróżniana jest wielkość liter w adresie URL .
Z drugiej strony w Wikipedii rozróżniana jest wielkość liter, z wyjątkiem pierwszego znaku tytułu. Adresy URL https://en.wikipedia.org/wiki/Case_sensitivity i https://en.wikipedia.org/wiki/case_sensitivity prowadzą do tego samego artykułu, ale https://en.wikipedia.org/wiki/CASE_SENSITIVITY zwraca 404
źródło
7996919
. Semantyczna część adresu URL jest tylko do celów SEO.Zależy od hosta os. Witryny hostowane w systemie Windows zwykle nie rozróżniają wielkości liter, ponieważ w bazowym systemie plików nie jest rozróżniana wielkość liter. W witrynach hostowanych w systemach typu Unix rozróżniana jest wielkość liter, ponieważ w bazowych systemach plików zwykle rozróżniana jest wielkość liter. W części adresu URL w nazwie hosta zawsze rozróżniana jest wielkość liter, reszta ścieżki jest różna.
źródło
Nazwa domeny część adresu URL nie jest wielkość liter, ponieważ DNS ignoruje sprawy:
http://en.example.org/
aHTTP://EN.EXAMPLE.ORG/
zarówno otwarta ta sama strona.Ścieżka służy do określenia i znalezienia żądanego zasobu. Rozróżniana jest wielkość liter, chociaż niektóre serwery, zwłaszcza te oparte na systemie Microsoft Windows, mogą traktować wielkość liter jako bez rozróżniania wielkości liter.
Jeśli na serwerze rozróżniana jest wielkość liter i
http://en.example.org/wiki/URL
jest ona poprawna, wtedyhttp://en.example.org/WIKI/URL
lubhttp://en.example.org/wiki/url
wyświetli stronę błędu HTTP 404, chyba że te adresy URL wskazują same ważne zasoby.źródło
HTTP://www.EXAMPLE.com/
http://www.example.com/
Nie jestem fanem podrzucania starych artykułów, ale ponieważ była to jedna z pierwszych odpowiedzi na ten konkretny problem, poczułem potrzebę wyjaśnienia czegoś.
Jak odpowiedź @Bhavin Shah stwierdza, że w części adresu URL domeny nie jest rozróżniana wielkość liter, więc
i
i
są takie same, ale wszystko po części nazwy domeny jest uważane za rozróżnianą wielkość liter.
więc...
i
są różne.
Uwaga: W wielu przypadkach mówię „technicznie”, a nie „dosłownie”, w większości przypadków serwery są skonfigurowane do obsługi tych samych elementów, ale można je skonfigurować tak, aby NIE były obsługiwane tak samo.
Różne serwery traktują to inaczej i w niektórych przypadkach muszą uwzględniać wielkość liter. W wielu przypadkach wartości ciągu zapytania są zakodowane (takie jak Session ID lub dane zakodowane w Base64, które są przekazywane jako wartość ciągu zapytania). W tych elementach rozróżniana jest wielkość liter, więc serwer musi rozróżniać małe i wielkie litery przy ich przetwarzaniu.
Aby odpowiedzieć na pytanie, czy serwery powinny rozróżniać małe i duże litery podczas pobierania tych danych, odpowiedź brzmi „tak, zdecydowanie”.
Oczywiście nie wszystko musi uwzględniać wielkość liter, ale serwer powinien wiedzieć, co to jest i jak sobie z nimi poradzić.
Komentarz Hart Simha w zasadzie mówi to samo. Przegapiłem go przed opublikowaniem, więc chcę przyznać kredyt tam, gdzie jest on należny.
źródło
Spójrz na specyfikację tutaj: sekcja 2.7.3 http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25#page-19
źródło
Rozważ następujące:
https://www.example.com/createuser.php?name=Paul%20McCartney
W tym hipotetycznym przykładzie formularz HTML - przy użyciu metody GET - wysyła parametr „name” do skryptu PHP, który tworzy nowe konto użytkownika.
W tym przykładzie powołuję się na to, że w tym parametrze GET należy rozróżniać małe i wielkie litery, aby zachować wielkie litery „McCartney” (lub, jako inny przykład, zachować „Walter d'Isney”, ponieważ istnieją inne sposoby dla nazw, które łamią zwykłe reguły wielkich liter).
To takie przypadki, które kierują zaleceniem W3C, że system i host nie rozróżniają wielkości liter, ale wszystko po tym może rozróżniać małe i wielkie litery - i jest to pozostawione serwerowi. Wymuszenie niewrażliwości na wielkość liter w standardzie spowodowałoby, że powyższy przykład nie byłby w stanie zachować przypadku wprowadzania danych przez użytkownika przekazanego jako parametr zapytania GET.
Ale powiedziałbym, że chociaż z konieczności jest to litera prawa uwzględniająca takie przypadki, duchem prawa jest to, że tam, gdzie sprawa jest nieistotna, zachowuj się w sposób niewrażliwy na sprawy. Standardy nie mogą jednak powiedzieć, gdzie wielkość liter jest nieistotna, ponieważ podobnie jak podane przeze mnie przykłady, jest to zależne od kontekstu.
(np. nazwa użytkownika konta najprawdopodobniej najlepiej zmusza do rozróżniania wielkości liter - ponieważ „User123” i „user123” będące różnymi kontami mogą się mylić - nawet jeśli w ich prawdziwej nazwie, jak wyżej, najlepiej rozróżniana jest wielkość liter).
Czasami jest to istotne, w większości przypadków nie. Ale decyzję o tych rzeczach należy pozostawić twórcy serwerów / stron WWW - i nie może być to przepisane normalnie - ponieważ tylko na tym poziomie można by poznać kontekst.
Schemat i host nie rozróżniają wielkości liter (co pokazuje preferencję standardu dla rozróżniania wielkości liter, gdzie można to powszechnie przepisać). Reszta należy do Ciebie, ponieważ lepiej rozumiesz kontekst. Ale, jak już wspomniano, w duchu prawa prawdopodobnie powinieneś domyślnie nie zwracać uwagi na wielkość liter, chyba że masz ku temu dobry powód.
źródło
Adresy URL nie rozróżniają wielkości liter, chyba że istnieje dobry powód, dla którego nie powinny.
Nie jest to obowiązkowe (nie jest to żadna część RFC), ale sprawia, że komunikacja i przechowywanie adresów URL są znacznie bardziej niezawodne.
Jeśli mam dwie strony w witrynie:
i
Czym powinny się różnić? Być może napisano „styl krzyczenia” (wielkie litery) - ale z punktu widzenia IA rozróżnienia w przypadku adresu URL nigdy nie należy wprowadzać.
Co więcej, łatwo jest to zaimplementować w Apache - wystarczy użyć
CheckSpelling On
z mod_Speling.źródło
Stare pytanie, ale natknąłem się tutaj, więc dlaczego nie spróbować, ponieważ pytanie szuka innej perspektywy, a nie ostatecznej odpowiedzi.
w3c może mieć swoje rekomendacje - co mnie bardzo obchodzi - ale chcę przemyśleć, skoro pytanie jest tutaj.
Dlaczego w3c uważa, że w nazwach domen nie jest rozróżniana wielkość liter, a następnie pozostawia coś bez rozróżniania wielkości liter?
Myślę, że uzasadnieniem jest to, że część domeny adresu URL jest wpisywana ręcznie przez użytkownika. Wszystko po byciu hipertekstem zostanie rozwiązane przez maszynę (przeglądarka i serwer z tyłu).
Maszyny lepiej radzą sobie z rozróżnianiem wielkości liter niż ludzie (nie jest to techniczne :)).
Ale pytanie jest tylko dlatego, że maszyny MOGĄ obsłużyć, że należy to zrobić w ten sposób?
Mam na myśli jakie są korzyści z nazywania i uzyskiwania dostępu do zasobu siedzącego w
hereIsTheResource
vshereistheresource
?Boczna jest bardzo nieczytelna niż obudowa wielbłąda, która jest bardziej czytelna. Czytelne dla ludzi (w tym techniczne).
Oto moje punkty: -
Ścieżka zasobów znajduje się gdzieś pośrodku struktury programowania i czasami jest blisko użytkownika końcowego za przeglądarką.
Twój adres URL (bez nazwy domeny) nie powinien rozróżniać wielkości liter, jeśli użytkownicy powinni go dotykać lub wpisywać itp. Powinieneś opracować swoją aplikację w celu UNIKNIĘCIA, tak aby użytkownicy wpisywali ścieżkę tak często, jak to możliwe.
W adresie URL (bez nazwy domeny) rozróżniana jest wielkość liter, jeśli użytkownicy nigdy nie wpisaliby go ręcznie.
Wniosek
Ścieżka powinna uwzględniać wielkość liter. Moje punkty ważą ścieżki wrażliwe na wielkość liter.
źródło
Znaki URL są konwertowane na kod szesnastkowy (jeśli kiedykolwiek zauważyłeś spacje w adresach URL wyświetlane jako% 20 itp.), A ponieważ małe i duże litery mają różne wartości szesnastkowe, to jest całkowicie zrozumiałe, że w adresach URL z całą pewnością rozróżniana jest wielkość liter. Jednak wydaje się, że duch tego pytania POWINNY być standardem i mówię „nie”, ale są. To deweloper / dostawca musi uwzględnić to w swoim kodzie, jeśli chcą, aby działał niezależnie od użytkownika końcowego.
źródło
Myślę, że w tej i wielu odpowiedziach dotyczących tego, co mówi lub nie mówi specyfikacja, brakuje sedna pytania. Czy powinny uwzględniać wielkość liter? To naprawdę zadane pytanie. Z punktu widzenia użytkownika rozróżnianie wielkości liter jest problemem, nie wszyscy wiedzą, że to robi różnicę. Pytanie, czy identyfikatory URI powinny być, czy nie, zależy od kontekstu pytania. Tak, powinny być, jeśli chodzi o elastyczność techniczną. Jeśli chodzi o użyteczność, nie, nie powinny.
źródło
Zabezpieczanie skrzynek
Adresy URL zachowują wielkość liter między klientem a serwerem. Jednak w niektórych adresach URL rozróżniana jest wielkość liter , w zależności od serwera, z kilku powodów.
Rozróżnianie wielkości liter
W poniższych pogrubionych częściach adresów URL może być rozróżniana wielkość liter, zależnie od konfiguracji witryny i / lub serwera.
http: // www. example.com /abc/def.ghi?jkl=mno#pqr
użytkownik @ example.com
Racjonalne uzasadnienie
Rozróżnianie wielkości liter w adresach URL może mieć kilka zastosowań. Głównie:
Jako programista uważam, że powyższe często można rozwiązać lepiej, ale rozumiem też, że istnieją przypadki, w których sytuacja może na to nie pozwolić.
Na przykład wyobraź sobie istniejący produkt, który wymaga dużej ilości danych umieszczonych w adresie URL „GET”, ale musi być zgodny z maksymalnymi długościami adresów URL wszystkich głównych serwerów, przeglądarek i mechanizmów buforowania / proxy. Aby zmieścić nawet ciąg poleceń o średniej długości (poniżej 1024 znaków w niektórych starszych przeglądarkach), musisz użyć każdego unikalnego znaku bezpiecznego adresu URL, który możesz (co w zasadzie jest kodowaniem base64url).
W idealnym świecie
To, czy adresy URL powinny być rozróżniana jest dyskusyjna. Osobiście uważam, że tak nie powinno być, dla uproszczenia (chociaż może tworzyć dłuższe adresy URL, mamy procenty ucieczki, aby łatwo obsłużyć przypadki, w których musimy zapewnić zachowanie dokładnych znaków, i istnieją sposoby przesyłania danych inne niż bezpośrednio w adresie URL) .
Wiele osób zgadza się z tym, że adresy URL bez rozróżniania wielkości liter są jawnie włączone dla wielu popularnych witryn i usług, w celu zwiększenia użyteczności. Najbardziej widocznym przykładem jest część adresów e-mail dotycząca nazwy użytkownika. Większość dostawców poczty e-mail zignoruje wielkość liter, a czasem nawet kropki i inne symbole (np. „[email protected]” jest taki sam jak „[email protected]”). Mimo że w nazwach użytkowników wiadomości e-mail rozróżniana jest wielkość liter, zgodnie ze specyfikacją.
Jednak faktem jest, że pomimo tego, czego ja lub inni moglibyśmy chcieć, taki jest stan rzeczy, które obecnie działają. I chociaż na całym świecie możliwe jest z pewnością przejście na standard URL-a bez rozróżniania wielkości liter, prawdopodobnie zajmie to sporo czasu, ponieważ rozróżnianie wielkości liter jest obecnie szeroko stosowane w Internecie do różnych celów.
Najlepsze praktyki
Jeśli chodzi o najlepsze praktyki, jako użytkownik możesz rozsądnie trzymać się małych liter w większości sytuacji i oczekiwać, że wszystko zadziała. Głównymi wyjątkami byłyby adresy URL wykorzystujące kodowanie oparte na wielkości liter lub ścieżki dokumentów z bezpośrednimi odpowiednikami systemu plików. Jednak takie złożone adresy URL są zazwyczaj wklejane (lub po prostu klikane), a nie ręcznie.
Jako twórca stron internetowych, powinieneś rozważyć zachowanie URL-i bez rozróżniania wielkości liter. Chociaż wyraźnie istnieją pewne trudne do uniknięcia sytuacje, w zależności od kontekstu, jak wspomniano powyżej.
źródło
Nie widzę sensu ani dobrej praktyki za rozróżnianiem wielkości liter. To głupie, do bani i należy go zawsze unikać.
Dla przypomnienia mojej opinii, kiedy ktoś pyta, jaki adres URL, jak możesz wyjaśnić, jakie znaki adresu URL mają wielkie lub małe litery? To nonsens i nikt nigdy nie powinien ci mówić inaczej.
źródło
W przypadku witryn hostowanych na serwerze Linux rozróżniana jest wielkość liter. http://www.google.com/about i http://www.google.com/About zostaną przekierowane do różnych lokalizacji. W systemie Windows Server URL nie rozróżnia wielkości liter, tak jak w przypadku nazywania FOLDERU i zostanie przekierowany do tej samej lokalizacji.
źródło
Możliwe jest tworzenie nie uwzględniających wielkości liter adresów URL
Tworzenie Google.com..GOOGLE.com itp. Bezpośrednio na google.com
źródło