Comment forcer SSL pour toutes les demandes?

9

Existe-t-il un moyen de forcer SSL pour toutes les demandes? Tout comme l'option d'utiliser admin ssl, mais pour toutes les demandes, y compris celles qui ne sont pas connectées.

grm
la source

Réponses:

7

Une simple vérification is_ssl()devrait le faire:

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;
}

Mais je ferais cela en .htaccess pour capturer des images aussi:

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

Pour ISS, voir cette réponse sur Stack Overflow .

fuxia
la source
1

Ajoutez cette règle en haut de .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

Cela devrait être avant les règles de WordPress.

kosinix
la source
Le code de codex.wordpress.org/Administration_Over_SSL est presque identique à l'exception de quelques caractères regex, une idée si l'un ou l'autre est plus stable?
Prosody-Gab Vereable Context
-1

J'ai utilisé le protocole SSL vraiment simple sur tous mes sites clients et cela fonctionne très bien. Si vous ne souhaitez pas modifier le code, installez simplement ce plugin et configurez-le.

Sam
la source