Kiedy powinienem używać ukośnika końcowego w moim adresie URL?
Kiedy powinien być używany ukośnik końcowy w adresie URL? Na przykład - czy mój adres URL powinien wyglądać jak /about-us/
lub jak /about-us
?
Jestem w pełni świadomy kwestii związanych z SEO-powielanie treści i rzecz kanoniczna; staram się dowiedzieć, który z nich powinienem użyć w kontekście serwowania stron poprawnie .
Na przykład mój kolega myśli, że końcowy ukośnik na końcu oznacza, że jest to "folder" - "katalog", więc nie jest to poprawny styl. Ale myślę, że bez ukośnik w końcu-to też nie jest do końca poprawne, bo prawie wygląda jak folder, ale nie jest i nie jest normalnym plikiem, ale nazwą pliku bez rozszerzenia.
Czy istnieje właściwy sposób, aby wiedzieć, którego użyć?
8 answers
Moim osobistym zdaniem ciosy są nadużywane.
Zasadniczo format URL pochodził z tego samego formatu UNIX plików i folderów, później, na systemach DOS, i wreszcie, dostosowany do Internetu.
Typowym adresem URL tej książki na Uniksopodobnym systemie operacyjnym jest ścieżka do pliku, taka jak file: / / / home/username / RomeoAndJuliet.pdf, identyfikujący książkę elektroniczną zapisaną w pliku na lokalnym dysku twardym.
Źródło: Wikipedia: Uniform Resource Identyfikator
Kolejne dobre źródło do przeczytania: Wikipedia: schemat URI
Zgodnie z RFC 1738, który zdefiniował adresy URL w 1994 roku, gdy zasoby zawierają odniesienia do innych zasobów, mogą używać odnośników względnych, aby zdefiniować lokalizację drugiego zasobu, tak jakby powiedzieć "w tym samym miejscu co ten, z wyjątkiem następującej ścieżki względnej". Powiedział, że takie względne adresy URL są zależne od oryginalnego adresu URL zawierającego hierarchiczną strukturę przeciwko na którym opiera się odnośnik względny, oraz że ftp, http, i schematy URL plików są przykładami niektórych, które można uznać za hierarchiczne, z komponentami hierarchii oddzielonymi przez "/".
Source: Wikipedia Uniform Resource Locator (URL)
Także:
To pytanie słyszymy często. Dalej do odpowiedzi! Historycznie, często adresy URL z ukośnikiem końcowym wskazują Katalog, a te bez ukośnika końcowego ukośnik do Oznacz plik:
Http://example.com/foo/ (z ciągłym ukośnikiem, konwencjonalnie katalogiem)
Http://example.com/foo (bez końcowego ukośnika, konwencjonalnie plik)
Źródło: Google WebMaster Central Blog-slash czy nie slash
Wreszcie:
Ukośnik na końcu adresu URL sprawia, że adres wygląda "ładnie".
URL bez ukośnika na końcu i bez rozszerzenie wygląda nieco "dziwnie".
Nigdy nie nazwiesz pliku CSS (na przykład) http://www.sample.com/stylesheet / mógłbyś?
Ale jestem zwolennikiem najlepszych praktyk internetowych niezależnie od środowiska. To może być dziwne i niejasne, tak jak powiedziałeś o URL bez ext.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-27 03:03:59
To nie jest kwestia preferencji. /base
i /base/
mają inną semantykę. W wielu przypadkach różnica jest nieistotna. Ale jest to ważne, gdy istnieją względne adresy URL.
-
child
względem/base/
jest/base/child
. -
child
w stosunku do/base
jest (być może zaskakująco)/child
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-08 15:51:36
Zawsze jestem zaskoczony szerokim wykorzystaniem końcowych ukośników na adresach URL innych niż katalogowe (m.in. WordPress). To naprawdę nie powinno być debatą albo-albo, ponieważ umieszczanie ukośnika po zasobie jest semantycznie błędne. Sieć została zaprojektowana w celu dostarczania adresowalnych zasobów, a te adresy-adresy URL - zostały zaprojektowane w celu emulowania hierarchii systemu plików w stylu * nix. W tym kontekście:
- ukośniki zawsze oznaczają katalogi, nigdy pliki.
- pliki mogą mieć dowolną nazwę (z rozszerzeniami lub bez), ale nie może zawierać ani kończyć się ukośnikami.
Używając tych wytycznych, błędem jest umieszczanie ukośnika po zasobach spoza katalogu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-13 05:38:03
To nie jest kwestia estetyki, ale rzeczywiście różnica techniczna. Katalog jest całkowicie poprawny i prawie wszystko wyjaśnia. Rozwiążmy to:
Jesteś z powrotem w epoce kamienia lub obsługujesz tylko statyczne strony
Masz stałą strukturę katalogów na swoim serwerze i tylko pliki statyczne, takie jak obrazy, html i tak dalej-bez skryptów po stronie serwera lub w ogóle.
Przeglądarka żąda /index.htm
, istnieje i jest dostarczana do klient. Później masz wiele - powiedzmy-przeglądanych filmów DVD i stronę html dla każdego z nich w katalogu /dvd/
. Teraz ktoś prosi /dvd/adams_apples.htm
i jest dostarczony, ponieważ tam jest.
Pewnego dnia, ktoś po prostu prosi /dvd/
- który jest katalogiem i serwer próbuje dowiedzieć się, co dostarczyć. Oprócz ograniczeń dostępu i tak dalej są dwie możliwości: Pokaż użytkownikowi zawartość katalogu (założę się, że już to gdzieś widziałeś) lub pokaż plik domyślny (w Apache jest to: DirectoryIndex: sets the file that Apache will serve if a directory is requested.
)
Jak na razie tak dobrze, to jest oczekiwany przypadek. to już pokazuje różnicę w obsłudze, więc przejdźmy do niego:
O 5: 34 popełniłeś błąd w przesyłaniu plików
(co jest przy okazji całkowicie zrozumiałe.) Więc zrobiłeś coś zupełnie nie tak i zamiast przesłać /dvd/the_big_lebowski.htm
załadowałeś ten plik jako dvd
(bez rozszerzenia) do /
.
Ktoś dodał Twoją /dvd/
listę katalogów (z oczywiście nie chciałeś tworzyć i zawsze aktualizować tego nifty index.htm
) i odwiedzasz swoją stronę internetową. Zawartość katalogu jest dostarczana - wszystko w porządku.
Ktoś słyszał o twojej liście i pisze /dvd
. A teraz jest przerąbane. Zamiast listy katalogu DVD serwer znajduje plik o tej nazwie i dostarcza plik Big Lebowski.
Więc usuń ten plik i powiedz kolesiowi, żeby przeładował stronę. Twój serwer szuka pliku /dvd
, ale go nie ma. Większość serwerów będzie następnie zauważ, że istnieje katalog o tej nazwie i powiedz klientowi, że to, czego szukał, jest rzeczywiście gdzieś indziej. Odpowiedź najprawdopodobniej będzie brzmiała:
Status Code:301 Moved Permanently
z Location: http://[...]/dvd/
Więc, całkowicie ignorując to, comyślisz o katalogach lub plikach, serwer może obsłużyć tylko takie rzeczy i - o ile nie powiedział inaczej-decyduje za Ciebie o znaczeniu "slash czy nie".
W końcu po otrzymaniu tej odpowiedzi klient ładuje {[1] } i wszystko w porządku.
W porządku? Nie. "Just fine" is not good enough for you]}Masz jakąś dynamiczną stronę, na której wszystko jest przekazywane do /index.php
i jest przetwarzane. Do tej pory wszystko działało całkiem dobrze, ale to wszystko zaczyna czuć się wolniej i badasz.
Wkrótce zauważysz, że /dvd/list
robi dokładnie to samo: przekierowanie do /dvd/list/
, które jest następnie wewnętrznie tłumaczone na index.php?controller=dvd&action=list
. Jedna dodatkowa prośba - ale jeszcze gorzej! customer/login
przekierowania do customer/login/
, który z kolei przekierowuje na adres URL HTTPS z customer/login/
. W końcu masz Tony niepotrzebnych przekierowań HTTP (=dodatkowych żądań), które sprawiają, że doświadczenie użytkownika jest wolniejsze.
Najprawdopodobniej masz tutaj również domyślny indeks katalogów: index.php?controller=dvd
bez action
po prostu wewnętrznie ładuje index.php?controller=dvd&action=list
.
Podsumowanie:
Jeśli kończy się na
/
może nigdy nie być plikiem. brak zgadywania serwera.Slash or no slash są zupełnie inne znaczenia. istnieje techniczna różnica między "slash" a "no slash" i powinieneś być tego świadomy i odpowiednio z niego korzystać. Tylko dlatego, że serwer najprawdopodobniej ładuje
/dvd/index.htm
- lub ładuje poprawne Skrypty - kiedy mówisz/dvd
: robi to, ale nie dlatego, że złożyłeś właściwe żądanie. Czyli/dvd/
.Pomijając ukośnik, nawet jeśli rzeczywiście oznacza wersja z ukośnikiem daje dodatkowe żądanie HTTP kara. który jest zawsze zły (pomyśl o mobilnym opóźnieniu) i ma większą wagę niż" ładny URL " - zwłaszcza, że crawlery nie są tak głupie, jak wierzą SEO lub chcą, abyś uwierzył ;)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-29 13:24:50
Kiedy tworzysz swój adres URL /about-us/
(z ukośnikiem końcowym), łatwo jest zacząć od pojedynczego pliku index.html
, a następnie rozszerzyć go i dodać więcej plików (np. our-CEO-john-doe.jpg
) lub nawet zbudować pod nim hierarchię (np. /about-us/company/
, /about-us/products/
, itd.) w razie potrzeby, bez zmiany opublikowanego adresu URL. Daje to dużą elastyczność.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-15 17:00:22
Kto mówi, że nazwa pliku wymaga rozszerzenia?? zajrzyj kiedyś na maszynę *nix...
Zgadzam się z twoim przyjacielem, nie tracić Slasha.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-10 10:34:21
Inne odpowiedzi tutaj wydają się sprzyjać pominięciu trailing slash. Jest jeden przypadek, w którym końcowy ukośnik pomoże w optymalizacji pod kątem wyszukiwarek (SEO). Oznacza to, że twój dokument ma coś, co wydaje się być rozszerzeniem pliku, które nie jest .html
. Staje się to problemem w przypadku witryn oceniających witryny. Mogą wybrać pomiędzy tymi dwoma adresami URL:
http://mysite.example.com/rated.example.com
http://mysite.example.com/rated.example.com/
W takim przypadku wybrałbym ten z ukośnikiem. Dzieje się tak dlatego, że rozszerzenie .com
jest rozszerzeniem dla plików wykonywalnych poleceń systemu Windows. Wyszukiwarki i kontrolery wirusów często nie lubią adresów URL, które wydają się zawierać złośliwe oprogramowanie rozpowszechniane za pośrednictwem takich mechanizmów. Końcowy ukośnik wydaje się łagodzić wszelkie obawy, umożliwiając pozycjonowanie strony w wyszukiwarkach i uzyskanie przez kontrolery wirusów.
Jeśli Twoje adresy URL nie mają .
w części pliku, to zalecam pominięcie końcowego ukośnika dla uproszczenia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-25 15:22:31
Z punktu widzenia SEO wybór, czy ma zawierać końcowy ukośnik na końcu adresu URL, jest nieistotny. W dzisiejszych czasach często można zobaczyć przykłady obu w sieci. Witryna nie zostanie ukarana w żaden sposób, ani ten wybór nie wpłynie na ranking Twojej witryny w wyszukiwarkach lub inne względy SEO.
Po prostu wybierz preferowaną konwencję nazw URL i dołącz kanoniczny meta tag w sekcji <head>
każdej strony internetowej.
Wyszukiwarki mogą rozważyć pojedynczy strona internetowa jako dwa oddzielne duplikaty adresów URL, gdy napotkają go z ukośnikiem końcowym i bez niego, tj. example.com/about-us/
i example.com/about-us
.
Najlepszą praktyką jest dołączanie kanonicznego meta tagu na każdej stronie, ponieważ nie możesz kontrolować, w jaki sposób inne witryny łączą się z Twoimi adresami URL.
Znacznik kanoniczny wygląda tak: <link rel="canonical" href="https://example.com/about-us" />
. Korzystanie z kanonicznego meta tagu zapewnia, że wyszukiwarki liczą każdy z twoich adresów URL tylko raz, niezależnie od tego, czy inne witryny zawierają końcowy ukośnik, gdy łączą się z Twoją witryną.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-11 00:54:15