Как заставить SSL для всех запросов?


9

Есть ли способ заставить SSL для всех запросов? Очень похоже на вариант использования admin ssl, но для всех запросов, в том числе тех, которые не вошли в систему.

Ответы:



7

Простая проверка is_ssl()должна сделать это:

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

Но я бы сделал это в .htaccess, чтобы ловить изображения тоже:

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

Для МКС см. Этот ответ на переполнение стека .


1

Добавьте это правило в начало .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

Это должно быть до правил WordPress.


Код из codex.wordpress.org/Administration_Over_SSL практически идентичен, за исключением нескольких символов регулярных выражений, есть идеи, если какой-либо из них стабильнее?
prosody-Gab Vereable Context

-1

Я использовал Really Simple SSL для всех своих клиентских сайтов, и он работает очень хорошо. Если вы не хотите изменять код, просто установите этот плагин и настройте его.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.