To nie jest tak naprawdę kwestia estetyki, ale rzeczywiście różnica techniczna. Myślenie o tym w katalogu jest całkowicie poprawne i wyjaśnia wszystko. Sprawdźmy to:
Jesteś teraz w epoce kamienia łupanego lub wyświetlasz tylko statyczne strony
Masz stałą strukturę katalogów na swoim serwerze WWW i tylko pliki statyczne, takie jak obrazy, HTML itp. - Żadnych skryptów po stronie serwera ani żadnych innych.
Przeglądarka żąda /index.htm, istnieje i jest dostarczana do klienta. Później masz wiele - powiedzmy - sprawdzonych filmów DVD i stronę html dla każdego z nich w /dvd/katalogu. Teraz ktoś prosi /dvd/adams_apples.htmi jest dostarczany, ponieważ on tam jest.
Pewnego dnia ktoś po prostu pyta /dvd/- który jest katalogiem, a serwer próbuje dowiedzieć się, co dostarczyć. Oprócz ograniczeń dostępu i tak dalej istnieją dwie możliwości: pokazać użytkownikowi zawartości katalogów (założę się, że już to gdzieś widziałem) lub pokazać plik domyślny (w Apache jest: DirectoryIndex: sets the file that Apache will serve if a directory is requested.)
Jak dotąd tak dobrze, jest to oczekiwany przypadek.Już pokazuje różnicę w obsłudze, więc przejdźmy do tego:
O 5:34 popełniłeś błąd podczas przesyłania plików
(Nawiasem mówiąc, jest to całkowicie zrozumiałe.) Więc zrobiłeś coś zupełnie nie tak i zamiast przesyłać /dvd/the_big_lebowski.htmten plik przesłałeś jako dvd(bez rozszerzenia) do/ .
Ktoś dodał zakładkę do twojego /dvd/katalogu (oczywiście, że nie chciałeś tworzyć i zawsze aktualizować tego sprytnegoindex.htm ) i odwiedza twoją stronę internetową. Zawartość katalogu jest dostarczana - wszystko w porządku.
Ktoś usłyszał o twojej liście i pisze /dvd. A teraz jest przykręcony. Zamiast wykazu katalogu DVD serwer znajduje plik o tej nazwie i dostarcza plik Big Lebowski.
Więc usuwasz ten plik i każesz facetowi ponownie załadować stronę. Twój serwer szuka /dvdpliku, ale go nie ma. Większość serwerów zauważy wtedy, że istnieje katalog o tej nazwie i powie klientowi, że to, czego szukał, jest rzeczywiście gdzie indziej. Odpowiedź najprawdopodobniej będzie następująca:
Status Code:301 Moved Permanently z Location: http://[...]/dvd/
Całkowicie ignorując to , co ty myślisz o katalogach lub plikach, serwer może obsługiwać tylko takie rzeczy i - o ile nie powiedziano inaczej - decyduje o znaczeniu „slash or not”.
W końcu po otrzymaniu tej odpowiedzi klient ładuje się /dvd/i wszystko jest w porządku.
Czy to w porządku? Nie.
„W porządku” nie jest dla ciebie wystarczająco dobre
Masz dynamiczną stronę, na której wszystko jest przekazywane /index.phpi przetwarzane. Do tej pory wszystko działało całkiem dobrze, ale wszystko zaczęło się spowalniać, a Ty badasz.
Wkrótce zauważysz, że /dvd/listrobi to dokładnie to samo: przekierowanie, na /dvd/list/które jest następnie wewnętrznie tłumaczone index.php?controller=dvd&action=list. Jedna dodatkowa prośba - ale jeszcze gorzej! customer/loginprzekierowuje na customer/login/które z kolei przekierowuje na adres URL HTTPS customer/login/. W efekcie powstaje mnóstwo niepotrzebnych przekierowań HTTP (= dodatkowe żądania), które spowalniają działanie użytkownika.
Najprawdopodobniej masz tutaj również domyślny indeks katalogów: index.php?controller=dvdbez actionwewnętrznego ładowania index.php?controller=dvd&action=list.
Podsumowanie:
Jeśli się skończy /, nigdy nie będzie plikiem. Bez zgadywania serwera.
Slash lub no slash mają zupełnie inne znaczenia. Istnieje różnica techniczna / związana z zasobami między „cięciem lub bez cięcia” i powinieneś być tego świadomy i odpowiednio go używać. Tylko dlatego, że serwer najprawdopodobniej ładuje /dvd/index.htm- lub ładuje poprawne skrypty - kiedy mówisz /dvd: Robi to, ale nie dlatego, że zrobiłeś właściwe żądanie. Co by było /dvd/.
Pominięcie ukośnika, nawet jeśli naprawdę masz na myśli wersję ukośną, powoduje dodatkową karę za żądanie HTTP. Co jest zawsze złe (pomyśl o opóźnieniu na urządzeniach mobilnych) i ma większą wagę niż „ładny URL” - zwłaszcza, że roboty nie są tak głupie, jak wierzą SEO lub chcą, abyś uwierzył;)