Подмена ссылок с http на https в Wordpress
Рассмотрим способ подмены ссылок сайта с протоколом 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]