Jak sprawić, by cała strona korzystała z bezpiecznego połączenia? [Zamknięte]

18

W Drupal 7 korzystałem z modułu Bezpiecznego logowania , aby uruchomić witrynę w bezpiecznym połączeniu, ale wygląda na to, że po wylogowaniu nie wraca do http. Chciałbym po prostu uruchomić całą stronę jako https: // jako uproszczenie.

Czy istnieje prosty sposób na zrobienie tego bez użycia modułu?

Paul Connolly
źródło
Dzisiaj właśnie zainstalowałem moduł Htaccess , zmieniłem istniejące ustawienia i wdrożyłem ten profil. Wydaje się, że działa idealnie ...
Aleksey Zubenko

Odpowiedzi:

35

Jeśli chcesz przekierować wszystkie strony, aby wymusić użycie protokołu SSL, dodaj to do .htaccesspliku.

# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Należy to umieścić bezpośrednio po, RewriteEngine on jeśli nie masz wcześniejszych zapisów.

Stóg
źródło
1

Inną przydatną sztuczką, jeśli masz dostęp root do Apache w celu zmiany dyrektyw vhost, jest dodanie tego do dyrektywy SSL dla witryny. Większość współczesnych przeglądarek przestrzega tej dyrektywy (IE9 nie)

Header always set Strict-Transport-Security "max-age=63072000"

Możesz ustawić wiek na co tylko chcesz. Powoduje to informowanie przeglądarek internetowych, które stosują się do tego, aby WYŁĄCZNIE używać protokołu SSL do komunikowania się z witryną, a nigdy zwykłego protokołu HTTP. Daje to trochę pewności w całej sytuacji przełączania HTTP / HTTPS.

To przydatny hack.

UWAGA: Działa to tylko wtedy, gdy masz WARTY certyfikat SSL (niepodpisany, wygasł lub w inny sposób niepoprawny) w swojej witrynie. Jeśli tego nie zrobisz, uniemożliwi to łączenie się przeglądarki z przeglądarką aż do upływu maksymalnego okresu.

Brady
źródło
0

Jest jeszcze jedna opcja, którą możesz wypróbować - tego potrzebowałem do jednej z moich instalacji i nie wymagała ona żadnych dodatkowych modułów:

Po pierwsze, w twoim .htaccess:

RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^www\.yourdomainhere\.com*
RewriteRule ^(.*)$ https://www.yourdomainhere.com/ [L,R=301]

Należy to dodać po:

RewriteEngine on

Następnie w twoich ustawieniach. Php:

$base_url = 'https://www.yourdomainhere.com'; 

Możesz także sprawdzić zasoby zewnętrzne, takie jak czcionki internetowe i inne odwołania, które muszą pochodzić z domeny https, aby uniknąć ostrzeżeń o certyfikatach.

Mam nadzieję że to pomoże.

karolus
źródło
-2

Istnieje inne rozwiązanie, które polega na dodaniu $ _SERVER ['HTTPS'] = 'On'; w pliku settings.php

Zobacz więcej na https://www.drupal.org/https-information#comment-9901783

Wydaje się jednak, że metoda htaccess przekierowuje niezależnie, podczas gdy plik settings.php wymaga wyczyszczenia pamięci podręcznej przeglądarki.

Steve
źródło
2
Nie wydaje się, aby zrobić to samo. Musiałem wyczyścić pamięć podręczną Drupala, ale mimo to strony Drupala były obsługiwane jako https, zasoby takie jak obrazy nie były. Zostały załadowane, ale przeglądarka ostrzegała o tym (w konsoli), a ikona blokady miała ostrzeżenie. Musiałem dodać dyrektywę htaccess z odpowiedzi Ricksa, aby uzyskać odpowiednią ikonę blokady.
commonpike,