RealAdmin.ru

Подмена ссылок с http на https в Wordpress

Wordpress
Категория: Сайтострой
23 апр. 2019 г.

Рассмотрим способ подмены ссылок сайта с протоколом http на https в «Wordpress» без плагинов и правок базы данных. Замена будет происходить на лету в сгенерированном содержимом страницы. Такой подход нельзя считать 100% правильным, но он прост в реализации и в некоторых случаях может успешно применяться.

Следующий код нужно добавить в файл «functions.php» текущей темы.

ob_start();

function shutdown_func() {
    $final = '';
    $levels = ob_get_level();
    for ($i = 0; $i < $levels; $i++) { $final .= ob_get_clean(); }
    echo apply_filters('final_output', $final);
}

add_action('shutdown', 'shutdown_func', 0);

function replace_func($sContent) { 
   $sContent = str_replace('http://'.$_SERVER['HTTP_HOST'], 'https://'.$_SERVER['HTTP_HOST'], $sContent);
   return $sContent; 
}

add_filter('final_output', 'replace_func');

Здесь происходит перехват содержимого страницы перед тем, как отдать её посетителю. В этот момент можно заменить все адреса сайта с http на https. В панели администрирования всё останется без изменений.

Преимущества способа:

  • простая реализация;
  • легко откатить в случае проблем;
  • не требует ручной замены.

Не рекомендуется применять на сайтах с высокой посещаемостью (более 1000 посетителей в сутки).

Панель администрирования «Wordpress» на https

Для корректной работы панели администрирования «Wordpress» по защищенному протоколу не забудьте в настройках вручную поменять адреса.

Если после замены наблюдаются проблемы в работе панели, то исключите подмену ссылок для «админки». Для этого предыдущий код оберните в констуркцию:

    if (!is_admin()) {
        // содержимое предыдущего кода
    }

И не забудьте поставить 301 перенаправление с обычных адресов страниц на их версию с защищенным протоколом. Делается это в конфигурационном файле «.htaccess», который расположен в корневом каталоге сайта.

SetEnv HTTPS "on"
SetEnv HTTP_X_FORWARDED_PROTO "https"

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Теги:
Посмотрите похожее — 2
Комментарии —
    © REALADMIN.RU   2019 г.
    Страница сгенерирована: 0,1377 s | 4 mb.
    На каком уровне Вы играете в шахматы?
    О П Р О С
    Home Question Top