Zarządzam małą stroną internetową we współdzielonym środowisku LAMP: to w zasadzie oznacza, że jedyną rzeczą, którą mogę edytować, jest plik htaccess.
Chciałem dodać obsługę HSTS (i zrobiłem to), ale kiedy przetestowałem tutaj swoją witrynę pod kątem uprawnień do wstępnego ładowania HSTS, otrzymałem następujący błąd:
Błąd: HTTP najpierw przekierowuje na www
http://example
(HTTP) powinien natychmiast przekierować nahttps://example
(HTTPS) przed dodaniem subdomeny www. W tej chwili pierwsze przekierowanie tohttps://www.example.
Dodatkowe przekierowanie jest wymagane, aby każda przeglądarka obsługująca HSTS rejestrowała wpis HSTS dla domeny najwyższego poziomu, a nie tylko subdomeny.
Przypuszczam, że powinienem przekierowywać użytkowników w ten sposób:
http://example
(właśnie to użytkownik wprowadza w pasku adresu swojej przeglądarki)https://example
(przekierowujemy go do wersji strony HTTPS)https://www.example
(ponownie przekierowujemy go do subdomeny www)
Moje obecne przekierowanie odbywa się w następujący sposób:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
Próbowałem dodać przekierowanie przed ostatnim wierszem w ten sposób:
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
ale w przeglądarce pojawia się błąd „strona nie przekierowuje poprawnie”.
Jaki jest zatem właściwy sposób przekierowania użytkownika z wersji http witryny do https i wreszcie do https z www? I: czy są jakieś zagrożenia?
źródło
Strict-Transport-Security
nagłówka odpowiedzi. Na przykład, aby ustawić to na przekierowanie, musisz użyćalways
argumentu naHeader
dyrektywie. Odpowiedziałem na powiązane pytanie dotyczące stosu Pro Webmasterzy (pomiń pierwszą część mojej odpowiedzi na tematon
/off
), która zawiera bardziej szczegółowe informacje na temat implementacji „ wstępnego ładowania HSTS ” w.htaccess
..htaccess
tylko powiązanych pytań (ServerFault zakłada, że masz pełną kontrolę nad serwerem, w którym to przypadku nie robiłbyś tego.htaccess
). Jest to prawdopodobnie łatwiejsze do zaimplementowania w konfiguracji serwera za pomocą oddzielnych<VirtualHost>
kontenerów (ponieważ nie musisz zadzierać z zmiennymi env i dodatkowymi warunkami - jest „czystszy” i mniej podatny na błędy). Nie sądzę, że poleciłbym przesłanie listy „preload list”, jeśli tylko masz dostęp.htaccess
. (My 2c)