¿Cómo forzar SSL para todas las solicitudes?

9

¿Hay alguna forma de forzar SSL para todas las solicitudes? Al igual que la opción de usar ssl admin, pero para todas las solicitudes, incluidas las que no están conectadas.

grm
fuente

Respuestas:

7

Un simple chequeo para is_ssl()debería hacerlo:

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

Pero también haría esto en .htaccess para capturar imágenes:

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

Para ISS, vea esta respuesta en Stack Overflow .

fuxia
fuente
1

Agregue esta regla a la parte superior 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

Esto debería ser antes de las reglas de WordPress.

kosinix
fuente
El código de codex.wordpress.org/Administration_Over_SSL es casi idéntico a excepción de algunos caracteres regex, ¿alguna idea de si alguno es más estable?
Prosody-Gab Vereable Context
-1

He usado SSL realmente simple en todos mis sitios de clientes y funciona muy bien. Si no desea modificar el código, simplemente instale este complemento y configúrelo.

Sam
fuente