Jak wymusić SSL dla wszystkich żądań?


9

Czy istnieje sposób wymuszenia SSL dla wszystkich żądań? Podobnie jak opcja korzystania z admin ssl, ale dla wszystkich żądań, także tych niezalogowanych.

Odpowiedzi:



7

Proste sprawdzenie is_ssl()powinno to zrobić:

add_action( 'plugins_loaded', 'wpse_2718_force_ssl' );

function wpse_2718_force_ssl()
{
    if ( is_ssl() )
        return;

    wp_redirect(
        'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] 
    );
    exit;
}

Ale zrobiłbym to w .htaccess, aby również złapać obrazy:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

W przypadku ISS zobacz tę odpowiedź na temat Przepełnienia stosu .


1

Dodaj tę regułę na początku .htaccess:

# BEGIN Force SSL
# This should be the first rule before other rules
<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
# END Force SSL

Powinno to nastąpić przed zasadami WordPressa.


Kod z codex.wordpress.org/Administration_Over_SSL jest prawie identyczny, z wyjątkiem kilku znaków wyrażenia regularnego. Masz pojęcie, czy któryś z nich jest stabilny?
prosody-Gab Vereable Context

-1

Użyłem Really Simple SSL na moich wszystkich stronach klientów i działa bardzo dobrze. Jeśli nie chcesz modyfikować kodu, po prostu zainstaluj tę wtyczkę i skonfiguruj ją.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.