Содержание
Редирект с http на https неожиданно оказался актуальной задачей для всех моих сайтов, как корпоративных, так и вот для этого личного блога.
В, теперь уже далёком, 2016-м году (как время-то летит!) я писал о переходе с http на https, но в то время редиректом не озадачивался вообще. Однако теперь вот пришлось. И оказалось, что не всё так просто.
Не буду описывать что такое редирект и зачем он нужен - в Сети масса материалов об этом. Вот, например:
301 редирект призван помочь вебмастерам переадресовать пользователей с одного URL, который изначально был в адресной строке браузера, на совершенно иной. С точки зрения поисковой оптимизации, 301 Moved Permanently — это постоянный редирект, который помогает переместить до 99% ссылочного веса на новый URL, а старый «пометить» в качестве устаревшего.
Лично мне он понадобился для того, чтобы если набирали http, то попадали всё-равно на https. Для интернет-магазина это просто необходимо, особенно при организации там онлайн-платежей. Для остальных сайтов тоже.
301 редирект посредством .htaccess
Это, на мой взгляд, самый простой способ и подходит для многих владельцев сайтов, в том числе и для этого вот моего блога.
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule>
Заходим по FTP на свой сайт, ищем там файл .htaccess и вставляем вышеприведённый код.
Надо сказать, что вариантов подобного кода много - не все и не везде срабатывают. При необходимости их много можно найти в Сети. Тот, что я показал, сработал у меня без проблем.
И всё бы хорошо, но есть сервера Nginx (NGINX – это мощный веб-сервер, использующий не потоковую, управляемую событиями архитектуру, которая при правильной настройке позволяет ему превосходить Apache)... На этих серверах .htaccess не работает. Приходится использовать иные способы редиректа.
301 редирект с http на https на серверах Nginx
Тут надо оговориться, что когда-то мы арендовали виртуальный web-сервер (именно nginx), который сами конфигурируем и на котором размещаем все свои сайты. Но, с редиректом на уровне сервера вышла загвоздка и тогда я решил обратиться в техподдержку хостинга.
Коротко о попытке решить проблему через техподдержку.
Если уж совсем коротко, то техподдержка сообщила, что не сможет этого сделать, так-как наша панель управления сервером не предусматривает такую возможность. Предложили решать самим и не через настройки хостинга, а посредством кода на наших сайтах. Это я сейчас про свою компанию говорю. У нас там есть сайты (интернет-магазины) 3-х видов: мои рукописные (на php), на движке OpenCart и на движке WordPress.
Как делать 301 редирект с http на https в таких случаях я и расскажу ниже.
301 редирект с http на https при помощи php
Нижеприведённый код универсален. В том смысле, что я его внедрил и в рукописные свои сайты, и на сайты OpenCart. В последнем случае можно смело править файл index.php, поскольку OpenCart не предусматривает обновлений своих версий. Какую версию установил, та и будет всегда.
<?php
if (!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' ||
$_SERVER['HTTPS'] == 1) ||
isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
{
$redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $redirect);
exit();
}
?>
После этого, как ни набирай адрес - любая страница магазина открывается, как https...
301 редирект с http на https при помощи плагина WordPress
Увы, WordPress обновляется очень часто и все изменения, где-бы вы их ни делали, исчезнут при очередном обновлении. Да, тут на выручку приходят плагины редиректа. Однако, большинство из них, попросту вносят изменения в тот же .htaccess, который на nginx не работает.
Тем не менее, я всё-же нашёл именно то, что нужно.
Судя по описанию, плагин Redirectiom подойдёт для любого типа web-сервера. Устанавливаем и активируем, как обычно. После этого он появится в меню админ-панели.
Кликаем по этому пункту и попадаем на страницу настроек плагина.
Жмём кнопку «Start Setup» и попадаем в интерфейс настройки установки:
Отмечаем все галочки и кликаем «Continue Setup». Плагин установит нужные ему компоненты.
И наконец, после проверки REST API, завершаем установку.
Последним действием настраиваем собственно 301 редирект с http на https:
Обратите внимание: всю настройку я делал на вкладке «Сайт», на другие даже не заглядывал. Вот так выглядит моя настройка. Жмём кнопку «Обновить».
И на этом всё. Теперь любая страница WordPress, будь то интернет-магазин или блог, будет переадресована с http на https.
Подводя итог
Такими способами я решил проблему с редиректом на всех своих сайтах, корпоративных и личных - на рукописных, на OpenCart, на WordPress, включая и этот мой блог.
Надеюсь, вы понимаете, что это только редирект. До всех этих действий сайт уже должен работать по протоколу https, иметь соответствующий сертификат... Впрочем, ссылка о переходе с http на https есть в начале статьи.
Интересно как всегда и соображаю, а если мой сайт без движковый и собран из 40 разных страниц через ссылки в меню или под разными потомками корневого сайта servis.kharkov.ua. Что посоветуете?
Андрей, я в статье одним из вариантов показывал, как сделал для своих рукописных сайтов. А это и есть без движковые, как раз…
А если Вы про cold.kh.ua, так там переадресация вроде как работает уже…
Кстати, на servis.kharkov.ua тоже переадресация работает,..
Или Вы про что?
Спасибо за дельную статью! На своём блоге как-то сразу получилось настроить редирект на https. Но сейчас перепроверил на всякий случай ещё раз)
А кто настраивал-то? Беляш или его добрая хозяйка?
Да, за всё время ведения своего блога с 2012 г. я так и не вникла ни в редиректы, ни в htaccess и прочие понятия. Блин, это всё для меня китайская грамота, которую мозг отказывается воспринимать. Даже, как-то неловко.
Валентина, признайтесь: Вы же от этого дискомфорт не испытываете? Если Вас всё устраивает, то и не надо ничего менять. Но я уверен, что если вдруг это действительно понадобится, то разберётесь в всеми понятиями.
Я вот попробовал Ваш блог набрать, как https, а меня всё-равно на http перекинуло. Другими словами, у Вас всё работает, только в обратную сторону…
Так я и не переводила блог на https.
Я про то, что у Вас редирект работает. Правда он на http переводит, а не на https. Если бы не работал редирект, то при наборе https было бы сообщение, что страница не найдена, если я не ошибаюсь…
Очень полезная информация! Но для меня это очень сложно, поэтому настройку 301 редиректа мне помогли сделать. Если бы раньше я увидела вашу статью, то сделала бы это сама, и не пришлось бы платить за это деньги. Но пришлось, поскольку боюсь связываться с кодами. Я их просто панически боюсь/
Так раньше я и сам как-то не озадачивался данной темой… Вот, столкнулся и пришлось углубиться в вопрос.
Очень полезная информация, а главное – вовремя. Сейчас нечасто бываю в админке, забываю и то немногое, что знал. Вносить изменения в коды как-то боязно, хорошо, что есть плагин. Настроился он не сразу, потребовал очистить кеш.
Большое спасибо, Александр, за статью.
Игорь, здравствуйте! Так для того и писал, чтобы кому-нибудь пригодилось.
Правда, почему-то на Ваш сайт не смог перейти… Это у Вас проблема или у меня?
Я перешел. Ссылка работает. Это у меня новый сайт о живописи. Может, у Вас "пытается" на мой кулинарный сайт зайти? Я его закрыл.
Попробуйте зайти по прямой ссылке iacakov точка ru (чтобы не оставлять внешних ссылок)))))
Да нет, я же по ссылке с комментария перехожу… Не открывается у меня ни с дома, ни с работы…
Возможно этот адрес наши провайдеры блокируют. Та бывает иногда: они сначала оптом заблокируют ресурсы, а потом неспеша разбираются, что опасно, а что нет.
Ну вот, я был прав! Обычным браузером зайти не могу, а через ТОР зашёл без проблем. Игорь, я поражён, почему раньше не показывали своё творчество? Очень талантливо!
Спасибо, Александр!
Я показываю на выставках, в соцсетях, галереях, в т.ч. электронных. Недавно сделал этот сайт. Только не очень им занимаюсь…
Спасибо за тёплые слова в гостевой книге!)))
Из плагинов WordPress для 301-го редиректа пользовался только Simple 301 Redirects – он мне показался простым и удобным. Это когда отдельные страницы необходимо было перенаправить. При массовом редиректе – только .htaccess, в WordPress всегда корректно срабатывало. Вариант перенаправления при помощи php мне известен не был, понравилась его "универсальность", при случае попробую и этот вариант.
На nginx-серверах .htaccess не работает. Хоть через плагин, хоть как. Тот плагин, что ты указал, скорее всего меняет именно .htaccess. Но на nginx-серверах эффекта не будет.
php в wordpress тоже под вопросом – первое обновление и код слетел. Нет, можно конечно, дочерняя тема там и прочее. Но удобнее, конечно, использовать представленный в статье плагин. Надёжнее.
Во! То что надо. Спасибо большое за материал.
Рад, что материал оказался полезным.