Tak naprawdę nie zauważyłem tego przekierowania (301), gdy żądam takiego adresu URL bez ukośnika („/”) na końcu: http://server/directory
Serwer zareaguje za pomocą stałego nagłówka przekierowania 301 z lokalizacją nagłówka lokalizacji http://server/directory/
.
Zobacz ten przykład na żywo:
Żądanie użytkownika:
GET /social HTTP/1.1
( http://192.168.1.111/social )
Odpowiedź serwera Apache:
HTTP/1.1 301 Moved Permanently
Location: http://192.168.1.111/social/
Żądanie użytkownika:
GET /social/ HTTP/1.1
( http://192.168.1.111/social/ )
Odpowiedź serwera Apache:
HTTP/1.1 200 OK
Apache access.log:
192.168.1.130 - - [05/Apr/2014:22:06:47 +0200] "GET /social HTTP/1.1" 301 558 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
-
192.168.1.130 - - [05/Apr/2014:22:06:47 +0200] "GET /social/ HTTP/1.1" 200 942 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
Katalog / social / zawiera index.html
plik.
Oprogramowanie Apache: Apache/2.2.22 (Ubuntu)
Opcje katalogu:Options Indexes FollowSymLinks MultiViews
Moje pytanie brzmi: dlaczego apache to robi? A jak zapobiec przekierowaniu i wysłać index.html
bezpośrednio? Klienci muszą wysłać dwa zapytania, co jest naprawdę niepotrzebne. Być może niektórzy klienci nie zezwalają na przekierowania i nie będą mogli przejść do witryny bez końcowego ukośnika („/”).
Nie chcę wyłączać przekierowania. Nie chcę, aby serwer wysyłał odpowiedź bezpośrednio bez żadnego przekierowania. Nawet na żądanie /social
.
Czy apache służy do przekierowywania tych żądań? Serwer może po prostu wysłać dane bez przekierowywania, prawda? Czy powinienem użyć, mod_rewrite
aby temu zapobiec? Lub inna konfiguracja? A może powinienem tak po prostu pozwolić i dodać ukośnik na końcu wszystkich linków HTML i żyć z pewnymi przekierowaniami?
Co myślicie?
index.html
bez przekierowania
/social
. (Ogólnie rzecz biorąc, zwykle nie jest pożądane podawanie tej samej treści pod wieloma adresami URL).
/social
w twoim przykładzie.