Przekierowanie z HTTP na HTTPS (mod_rewrite)
·107 words·1 min
blog.dsinf.net
apache2
webserver
Często chcielibyśmy, żeby użytkownik nie miał szans wysłać danych w plain-text. Można to zrobić dzięki mod_rewrite - pluginowi Apache’a domyślnie zitegrowanego z większością instalacji.
Zmiany możemy wprowadzić w głównym konfigu - /etc/apache2/http.conf - wówczas docelowe linie wprowadzamy w znaczniku
<Directory /nasz/katalog/z/witryną>
jakieś dyrektywy
</Directory>
Alternatywnie konfig można wprowadzić do pliku .htaccess umieszczonego w interesującym nas katalogu - jedyna opcja przy hostingu.
Typowo przekierowanie powinno wyglądać tak:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Jednak część serwerów (np. autorski perser htaccessów dla nginxa w MyDevilu) nie rozumieją drugiej linijki prowadząc do pętli przekierowań - ERR_TOO_MANY_REDIRECTS. Rozwiązaniem jest zmiana logiki - nie protokół, a port:
RewriteCond %{SERVER_PORT} ^80$