Czy końcowy ukośnik jest dodawany automatycznie po kliknięciu adresu URL strony głównej w przeglądarce?

17

Pytam o to, ponieważ za każdym razem, gdy najeżdżam kursorem na link do strony głównej (np. http://www.example.com)Zauważam, że ukośnik końcowy jest zawsze dodawany (jak widać na pasku stanu przeglądarki), czy link do strony głównej zawiera atrybut href, który kończy się na ukośnik czy nie. Ale ilekroć jestem na stronie głównej, wyświetlany adres URL nie będzie miał ukośnika końcowego.

Próbowałem wprowadzić ukośnik do adresu URL na pasku adresu URL. Po włączeniu Firebug zauważam, że witryna zawsze zwraca 200 OK. Artykuł tutaj omawianie ta stwierdza, że posiadanie ukośnik na końcu uniknie 301 przekierowanie. Ale nie widzę żadnych przekierowań, nawet na tej stronie.

Czy może to być funkcja przeglądarki dołączająca ukośnik?

Przepełnienie pytania
źródło
Tak. Na przykład myślę, że Opera ukrywa ukośnik do przodu (i czasami ukrywa protokół, co doprowadza mnie do szału na deweloperach!) ...
Matt
Jakie dokładnie jest tutaj pytanie? (Lub sedno pytania.) A do jakiej „witryny” odwołujesz się? Jeśli na przykład sprawdzisz tutaj z webmasterami, zauważysz, że w Firefoksie i Chrome (nie przeprowadzam pełnej serii testów) to, co opisujesz, jeśli chodzi o dodawanie ukośnika, nie ma miejsca. Rzeczywiście wydaje się zmusić ukośnik zostać usunięte jeśli spróbujesz i dodać jeden, jeśli o to chodzi.
Su
@Su ”, odnoszę się do dowolnej witryny, a pasek stanu odnosi się do wyświetlanego u dołu dowolnej przeglądarki, a pasek adresu URL odnosi się do paska adresu u góry. Przepraszam, jeśli sprawiłem ci zamieszanie.
Przepełnienie pytania
2
@Matt Opera ukrywa również ciąg zapytania (nieco później ?w adresie URL), co jest dość głupie IMO.
DisgruntledGoat

Odpowiedzi:

28

Tak, wszystkie przeglądarki głównego nurtu „dodają ukośnik” do żądania HTTP, gdy żądają adresu URL samej domeny (tj. Strony głównej). Jest to faktycznie konieczne, aby żądanie HTTP było ważne, co http://example.com/oznacza:

GET / HTTP/1.1
Host: example.com

Uwaga /(ukośnik) w pierwszym wierszu - jest to żądany adres URL. Nie ma tutaj niczego . Z RFC 2616 :

Zauważ, że ścieżka bezwzględna nie może być pusta; jeśli żaden nie jest obecny w oryginalnym URI, MUSI być podany jako „/” (katalog główny serwera).

Musisz spojrzeć na żądanie HTTP wysyłane przez przeglądarkę do serwera. Adres URL wyświetlany na „pasku stanu przeglądarki”, a nawet adres URL na pasku adresu może być inny - bardziej przyjazny dla użytkownika. Google Chrome nie dołącza ukośnika końcowego na pasku stanu, chociaż ukośnik jest obecny w żądaniu.

Przekierowanie 301 nie występuje, jeśli podasz http://example.com(bez ukośnika), ponieważ przeglądarka koryguje żądanie HTTP przed jego wykonaniem.

Pamiętaj, że różni się to od dodawania ukośników na końcu adresów URL, gdy istnieje ścieżka / katalog. na przykład. http://example.com/directory/. Artykuł, do którego linkujesz, wydaje się traktować tak samo i nie wydaje się być całkowicie poprawną IMO. Jeśli poprosiłeś http://example.com/directory(bez ukośnika), przeglądarka nie dołącza ukośnika i tak, większość serwerów przekieruje 301 na http://example.com/directory/(ukośnik) - ale to zależy od serwera; może po prostu się zepsuć! Na przykład w przypadku Apache zależy to od ustawienia DirectorySlashdyrektywy na on.

MrWhite
źródło
Aby dodać do odpowiedzi, ilekroć łączysz się ze stroną główną, dodaj ukośnik końcowy, aby zaoszczędzić zasoby serwera.
Anagio
5
@Anagio Nie sądzę, że rozumiesz odpowiedź. W ogóle nie oszczędzasz zasobów serwera, ponieważ nie ma przekierowań. Domena z ukośnikiem i bez niego jest w 100% identyczna. Innymi słowy, nie ma absolutnie żadnego sposobu, aby zwrócić inną treść dla każdej z nich (co można zrobić za pomocą adresów URL katalogu).
DisgruntledGoat
1
@DisgruntledGoat, jeśli porzucisz końcowy ukośnik, a serwer przekieruje, a następnie dodanie końcowego ukośnika w linkach uratuje serwer przed ponownym załadowaniem na stronę. To wszystko, o co mi chodziło, aby odłożyć tę rozmowę na ostry
Anagio
5
@Anagio Ten artykuł dotyczy końcowych ukośników dla katalogów , podczas gdy to pytanie dotyczy końcowego ukośnika tylko w domenie . Jak wynika z powyższej odpowiedzi, robi to zerową różnicę, ponieważ łącze do example.comlub example.com/oba wymagają dokładnie tego samego żądania do serwera.
DisgruntledGoat
3
… Ponieważ przeglądarka to „poprawi”.
Unor