Редирект с http на https: повышаем безопасность сайта

Включение HSTS

Строгая транспортная безопасность HTTP (HSTS) — это механизм политики веб-безопасности, с помощью которого веб-сервер указывает, что он поддерживает подключения только по протоколу HTTPS. Это позволяет предотвратить атаки типа «злоумышленник в середине» на SSL.

Эта политика передается сервером агенту пользователя в поле заголовка HTTP-ответа «Strict-Transport-Security». Политика задает период, в течение которого у агент пользователя будет доступ к серверу только безопасным способом.

Пропишите в файле .htaccess следующий код:

<IfModule mod_headers.c>
# this domain should only be contacted in HTTPS for the next 12 months
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
</IfModule>

Не забывайте перед любыми операциями над сайтом создавать его резервную копию.

Опубликовано в рубрике WordPress, Безопасность

Шаг 2: Покупка SSL сертификата

Прежде чем приобретать SSL нам нужно определиться с нашими потребностями.

Типы ssl

Все сертификаты выдаются для 1 домена:

Если у вас много поддоменов и вы хотите их перевести на https — стоит обратить внимание на сертификаты с пометкой Wildcard (количество поддоменов неограниченно)

Активация https для домена

После того, как вы решили какой тип сертификата вам нужен, купили его (свои сертификаты я покупал на gogetssl.com, а для блога решил потестить бесплатный Let’s Encrypt) и не забыли сохранить все ключи, которые вам были даны — самое время привязать все к вашему домену.

После активации домена он должен пройти валидацию:

Валидация домена пройдена

Все, теперь можно переходить к следующему шагу.

Бесплатный SSL от Let’s Encrypt

Let’s Ecnrypt — это некоммерческий центр сертификации

Вы можете без проблем взять их бесплатный сертификат, если вам важно само наличие https

Яндекс и Google (а также браузеры) нормально относятся к нему, т.е. никаких трудностей у вас не будет.


У хостеров бесплатный сертификат подключается за 1 минуту

На многих хостингах можно буквально за минуту подключить бесплатный SSL.

Установка SSL на примере FastVPS

У вас есть ключи и все что вам нужно сделать — это добавить их в панели своего хостинга.


Просто вставить в поля свои ключи от центра сертификации

Переадресация 301 с http на https

При помощи 301-го редиректа мы получаем два результата:

  • Сообщаем поисковым системам что «http://elims.org.ua» и «https://elims.org.ua» — это одна и та же страница. А точнее говорим что мы переместили страницу с  «http://elims.org.ua» на «https://elims.org.ua» и просим перенести весь ссылочный вес и прочие «заслуги».
  • Всех посетителей http-версии страницы автоматически переадресовываем на https-версию страницы.

301-ю переадресацию с http на https можно реализовать тремя способами, через:

  • файл .htaccess
  • php-код
  • плагин

301 редирект с http на https через .htaccess

Вариантов кодов для редиректа с http на https через .htaccess существует большое количество, я для примера приведу два из них:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yoursite.com/$1 
</IfModule>

Или еще один код:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^yoursite.com 
RewriteCond %{HTTP_HOST} ^www.yoursite.com 
RewriteRule ^(.*)$ https://www.yoursite.com/$1 
</IfModule>

Не всегда такая переадресация работает, у меня например по началу выбивало ошибку «ERR_TOO_MANY_REDIRECTS» — «На этой странице обнаружена циклическая переадресация».

Но после в справочной информации своего хостинга ukraine нашел код, который заработал и позволил отказаться от плагина.

Рабочая версия код для моего wordpress в режиме мультиблога:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - 
#for SSL
RewriteCond %{HTTP:SSL} !=1 
RewriteRule ^(.*) https://elims.org.ua/$1 

301 редирект с http на https через php-код

Все просто — открываем файл в шаблоне functions.php и прописываем следующий код:

function force_https () {
 if ( !is_ssl() ) {
  wp_redirect('https://' . $_SERVER . $_SERVER, 301 );
  exit();
 }
}
add_action ( 'template_redirect', 'force_https', 1 );

или еще один вариант, предложенный читателем — именно такой вариант для читателя был рабочим:

<?php
 add_action ( 'template_redirect', 'force_https', 1 );
 function force_https () {
  if ( !is_ssl() ) {
   wp_redirect('https://' . $_SERVER . $_SERVER, 301 );
   exit();
  }
 }
?>

301 редирект с http на https через wordpress плагин

Более опытные веб-мастеры предпочитают обходимся своим кодом и не использовать плагины в тех случаях, когда можно без них обойтись. Это связано с тем, что в плагинах часто реализован лишний функционал, который не нужен и может создавать лишнюю нагрузку. При этом сами плагины могут некорректно работать. Но в данном случае именно этот метод переадресации я предпочел, так, как нашел плагин состоящий всего лишь из нескольких строк php-кода, который опубликован выше. Все-таки активировать и деактивировать плагин более удобней, чем редактировать php-файлы.

Упомяну три плагина:

  • WordPress HTTPS (SSL): можно активировать принудительный вход в админку через https, настраивать https только для определенных страничек\записей, либо для определенных адресов по регулярным выражениям, удалять со страницы весь не https-контент, изменять исходящие ссылки с http на https версии сайтов и пр. Этот плагин заработал не на всех шаблонах.
  • Easy HTTPS Redirection: можно настроить переадресацию для всех страниц или только для определенных. По сути плагин добавляет в файл .htaccess код для редиректа. Но, как я писал выше, этот метод у меня вызывает ошибки «ERR_TOO_MANY_REDIRECTS» — «На этой странице обнаружена циклическая переадресация». При этом после деактивации плагина пришлось вручную удалять его код из файла .htaccess.
  • WordPress Force HTTPS — простой плагин, ничего лишнего. Переадресация реализована через php-код. Именно на нем я остановился.

Рекомендую через некоторое время убедится что поисковики не включают в индекс дубли страниц (http и https версий). Для это возьмите несколько адресов своих страниц и вбейте в гугле запрос подобный моему:

site:elims.org.ua inurl:elims.org.ua/blog/xosting-ukraine-obzor-i-otzyv/

На моем примере я увижу какие версии страницы «elims.org.ua/blog/xosting-ukraine-obzor-i-otzyv/» есть в поисковом индексе. Должна быть лишь одна версия — с https.

Если настройка редиректа с http на https произошла с ошибкой

Чаще всего вебмастера обращаются с вопросом, почему после настройки редиректа поисковики по версии http не видят файл robots.txt (это значит, что он отдает ответ сервера вместо 200).

Эта проблема связана со статическими настройками сервера, обычно статический контент должен отдавать по http и по https.

Но даже, если это не происходит, нет смысла беспокоиться: все данные теперь доступны по https.

В файле .htaccess в порядке исключения может быть настроено дополнительное правило:

RewriteCond %{REQUEST_URI} !robots.txt

Наша запись должна получить примерно такой вид:

 RewriteCond %{HTTP_HOST} ^(www\.)?sitename\.com$

RewriteCond %{HTTP:X-Forwarded-Proto} !=https

 RewriteCond %{REQUEST_URI} !robots.txt

RewriteRule ^(.*)$

Затем нужно выполнить проверку ответа сервера.

Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://www.%1/$1/

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)$ http://www.%1/$1/

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)$ http://www.%1/$1

Стратегии HTTPS-редиректов

Мы рассмотрели, как обрабатывается редирект с HTTP на HTTPS через htaccess после SSL / TLS согласования. А также выяснили, что для перенаправления клиентов с сайта или страницы на HTTPS нужен валидный сертификат SSL, который охватывает оба домена. Далее я расскажу об общих стратегиях настройки HTTPS-редиректов.

Существует два типа настройки редиректов с HTTPS:

  1. Редирект на уровне сервера;
  2. Редирект на уровне приложений.

Термин сервер обозначает любой сервер, который находится перед веб-приложением и обрабатывает входящий HTTP-запрос. Например, front-end сервер, сервер балансировки нагрузки или единичного приложения.

Термин приложение обозначает веб-приложение, которое может быть либо столь же простым, как PHP-скрипт, либо более сложным, таким как серверное Unicorn-приложение интерпретации Ruby on Rails.

Редирект с протокола http на https.

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1

Если возникает циклический редирект, то воспользуйтесь этим вариантом:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

Для Битрикс-сайтов на хостинге reg.ru

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI}

Для сертификатов https c Cloudflare:

RewriteCond %{HTTP:CF-Visitor} ‘»scheme»:»http»‘
# Without Cloudflare:
# RewriteCond %{HTTPS} off 
RewriteRule ^ https://www.example.com%{REQUEST_URI}

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

RewriteEngine on
RewriteCond %{HTTP:HTTPS}  !on
RewriteCond %{REQUEST_URI} !robots.txt
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Чем отличается HTTPS от HTTP

Чтобы разобраться этой теме, придется сделать ряд терминологических расшифровок и даже сделать небольшой экскурс в историю становления и развития всемирной сети интернет.

Чтобы не упустить нить мысли, рекомендуем прочитать все пункты внимательно, не перескакивая, иначе будет нарушена логика.

  1. Еще в далеком 1994-ом году разработчики компании Netscape Communications позаботились созданием безопасной среды коммуникаций для пользователя браузера Netscape Navigator и придумали защищенный протокол обмена данными HTTPS при помощи криптографического протокола SSL.
  2. К сожалению, в результате «Войны браузеров» поистине замечательный веб-обозреватель, во многом опередивший время, был повержен могуществом маркетологов корпорации Microsoft. В результате чего компания Netscape обанкротилась, а браузер Netscape Navigator перестал обновляться.
  3. Наступила эра глобализма браузера Internet Explorer.
  4. Hyper Text Transfer Protocol переводится как «трансферный протокол гипертекста» или «протокол трансфера внутри гипертекста». Говоря простыми словами – протокол передачи данных между гипертекстовыми документами.
  5. В данном контексте под протоколом следует понимать некий набор правил функционирования сетевого интерфейса.
  6. Под интерфейсом помается некая аппаратно-программная прослойка между функциональными единицами всемирной сети.
  7. SSL – Secure Sockets Layer переводится как «слой защищенных сокетов». Речь идет о алгоритме передачи данных между сетевыми интерфейсами, основанном на криптографическом шифровании.
  8. Правила обмена данными шифруются криптографическим образом для обеспечения невозможности третьих сторон получить доступ к передаваемым данным.

Если бы в свое время компания Netscape Communications не пала жертвой Войны Браузеров, мы бы имели безопасный протокол HTTPS внедренным уже двадцать лет назад.

Не углубляясь в тонкости искусства программирования, защищенный протокол передачи данных HTTPS – это самый обычный открытый протокол HTTP, но, правила и данные в этом случае шифруются посредством сертификации SSL.

HTTPS – способ обмена данными на базе открытого протокола HTTP интегрированного в слои криптографического протокола SSL.

В результате этого блокируется несанкционированный доступ к транслируемой информации.

HTTPS – это не есть какой-то новый или отдельный протокол.

Это HTTP, в котором защищенность от внешнего считывания достигается за счет передачи данных по шифрованным каналам или слоям криптографического протокола SSL.

Применение

HTTPS используется для обеспечения конфиденциальности в процессе обмена данными между документами или клиентами сети гипертекстовых документов.

Изначально защищенный протокол разрабатывался конкретно для защиты персональных данных пользователей веб-браузеров. В общем плане может использоваться для шифрования любых сетевых трансферов по глобальной или локальной сети.

В практическом смысле применение HTTPS целесообразно только в случаях, когда между субъектами обмена передаются сведения, которые не должны стать публичным достоянием.

К примеру, нет смысла тратить деньги на обеспечения шифрования общедоступной информации, которую можно свободно найти на каждом сайте в интернете.

Для каких интернет-проектов протокол HTTPS необходим?

Для проектов, в процессе функционирования которых по сети проходят персональные или коммерческие данные пользователей.

Информационно-тематическому блогу, автор которого занимается исключительно размещением статей для публичного чтения, шифрованный протокол HTTPS не обязателен.

Вспомним историю, компания Netscape Communications создавала HTTPS для защиты конфиденциальности пользователей своего браузера Netscape Navigator.

Создание постоянной переадресации 301 через настройки и плагины CMS

В большинстве популярных конструкторов сайтов и CMS (OpenCart, Joomla!, Битрикс, Wix, Тильда) предусмотрена настройка редиректов с помощью встроенных инструментов. Если сайт создан с помощью WordPress, для настройки переадресации можно воспользоваться следующими плагинами:

  • Redirection — самый популярный плагин для настройки редиректов. Кроме основной функции обладает следующими возможностями: сбором статистики переадресаций, отслеживанием ошибок 404, поддержкой регулярных выражений.

  • Safe Redirect Manager — простой плагин, который также поддерживает регулярные выражения, практически не влияет на производительность сайта.

  • Quick Page/Post Redirect Plugin — еще один удобный инструмент оптимизации. Один из недостатков — отсутствие поддержки регулярных выражений. К ссылкам можно добавлять атрибут «nofollow».

  • Simple 301 Redirects. Данный модуль обладает одним недостатком – url для переадресации необходимо прописывать вручную.

Настроить Permanent Redirect 301 в Вордпресс можно и через редактирование файла .htaccess в разделе управления хостингом. Чтобы подключиться к нему, потребуется использовать FTP-клиент. Сама кодировка производится по общим правилам настройки переадресации в .htaccess.

Чтобы настроить 301 редирект в CMS OpenCart в файле .htaccess необходимо прописать:

RewriteCond %{QUERY_STRING} ^_route_=адрес_старой_страницы.html$

RewriteRule ^(.*)$ http://ваш_домен.ru/новой_страницы/? 

Для Битрикс кодировка будет выглядеть следующим образом:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.sng-it.ru$ 

RewriteRule ^(.*)$ http://sng-it.ru/$1 

В Joomla настройки переадресации производятся через панель администратора в разделе «Компоненты» => «Перенаправление». Здесь можно не только установить правила редиректа, но и отслеживать страницы с битыми ссылками и перенаправлять их на корректные адреса.

С конструкторами сайтов все не так однозначно. Например, один из наиболее популярных CMS-конструкторов WIX не предоставляет возможности создания файла .htaccess.

Но настроить редирект 301 довольно просто в базовом редакторе.

301 редирект на http для одной страницы

В этой ситуации подойдет:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} 1

RewriteCond %{REQUEST_URI} ^/нужная-страница$

RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1

Второй метод осуществляет общий переезд на защищенный протокол (https), но одна страница останется на старом протоколе (http). Этот способ подойдет для интеграции 1С Bitrix с 1С Предприятие, так как система не может работать с защищенным протоколом:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{REQUEST_URI} !^/необходимая-страница$

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1

RewriteCond %{HTTP:X-HTTPS} 1

RewriteCond %{REQUEST_URI} ^/необходимая-страница$

RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1

Для готовой интеграции с 1С-Битрикс, формула позволяющая исключить директорию bitrix/admin/1c_exchange.php из общего правила:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteCond %{HTTP:X-Forwarded-Proto} !https

RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1

Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы

RewriteCond %{REQUEST_URI} ^\/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)$ http://www.%1/$1

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)\/$ http://www.%1/$1

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)$ http://www.%1/$1

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)\/$ http://www.%1/$1

Шаг 1: Подготовка сайта

Многих сложностей может не быть вообще, если изначально за сайтом следили и делали все чисто и без костылей.

Бэкап

Любое вмешательство в жизнь сайта (если это не простые действия с контентом или вы не самоуверенный программист) начинается с бэкапа, т.к. в случае появления проблем — вы быстро восстанавливаете данные и программист уходит все делать на своем серваке.

Относительные ссылки

Когда на сайте абсолютные ссылки вида http://romanus.ru/page-name — это может быть проблемой, т.к. их нужно:

  1. Либо заменить на относительные вида /page-name;
  2. Либо в абсолютных заменить протокол на https.

Я бы выбирал 1 вариант, т.к. он более гибкий и пригодится не только в решении текущей задачи. Однако и там есть свои минусы, но это не тема данной статьи.

Уверен, на любом сайте вы найдете волшебную таблетку (пример замены домена в статьях):


Пример замены домена через SQL-запрос: кто-то его проверял?

Почему люди везде это пишут — хз, видимо никто не проверял работоспособность т.к. этот вариант просто не работает. SQL запрос не может заменить домен в ячейке, содержащей целый текст, т.к. это просто замена в лоб (как в Excel). Т.е. вы не можете заменить ячейку, если она не равняется вашему тексту (читай, ячейка = текст и ничего более).

Но у нас же в ячейках текст статей в html формате.

Даю 2 рабочих вариант:

  1. Для понимающих (хотя им не нужно объяснять). Идем в PhpMyAdmin, экспортируем нашу базу данных (или конкретную таблицу, в которой нужно сделать изменения). Далее открываем редактором типа Sublime или Notepad++ и через замену все меняем. Далее импортируем исправленный вариант обратно в нашу базу данных.
  2. Чтобы не накосячить. Во многих CMS есть плагины, которые с помощью регулярок могут делать замены (да и без них). Например, для WordPress есть хороший плагин Search Regex — который быстро и без проблем поможет сделать замену в тех местах, в которых это нужно.


Пример работы плагина Search Regex

Все пути к файлам и изображениям также должны быть изменены.

Адрес сайта

В CMS нужно изменить адрес вашего сайта на корректный, в WordPress это делается так:


Замена домена в админке WordPress

Внешние скрипты

Все внешние скрипты должны подключаться строго через https, т.к. в противном случае у вас будет смешанный протокол. Чтобы убедиться — смотрите страницы через режим исходного кода и проходитесь поиском или любой краулер аля Screaming Frog, Netpeak и т.д.

Robots.txt и Sitemap.xml

В robots.txt чаще всего не нужно никаких изменений вносить (раньше нужно было добавить директиву для Яндекса: host: https://romanus.ru — но теперь это уже не нужно), кроме замены пути для sitemap.xml.

В самой карте сайта нужно изменить все ссылки. Если она у вас выводится автоматом + все ссылки в базе данных вы изменили — чаще всего никаких доработок не понадобится. Но лучше перепроверить:


В sitemap.xml не должно быть ссылок на незащищенный протокол

P.S. Многие рекомендуют делать исключения в .htaccess, чтобы robots.txt открывался по 2 протоколам. Я не делаю этого — проблем не замечал, но держу вас в курсе.

Как сделать редирект через файл htaccess

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

Redirect 301 site.ru/page1/ site.ru/page2/

Где:

  • page1- страница которая будет переадресовывать;
  • page2 – открывающийся документ.

Важно! Можно записывать адреса в относительном виде, например, /page1/ и /page2/. Также допускается использование конструкции:

Также допускается использование конструкции:

Redirect permanent site.ru/page1/ site.ru/page2/

Для того, чтобы выполнить правило, потребуется посетить административную панель хостинга (или же зайти через FTP), где в корневой папке сайта лежит файл htaccess.

Вводим нужное нам правило.

Как это работает?

Попробуем разобраться, как работает эта конфигурация htaccess редиректа http на https. Это поможет внести необходимые изменения:

RewriteEngine On

Первая строка позволяет Apache запустить механизм преобразования http-ссылок, необходимый для выполнения перенаправления:

RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} !^www. 

Эти две строки — условия перенаправления, они используются для определения того, должен ли запрос быть перенаправлен. Если любое из этих двух условий возвратит true, то Apache выполнит перенаправление, поскольку условия соединяются с помощью .

Первое условие определяет, использует ли запрос URL не-HTTPS. Второе условие определяет, использует ли запрос URL www. Заметьте, я использовал www.а не www., потому что образец является регулярным выражением и точка здесь используется для экранирования. Следовательно, ее нужно оставить:

RewriteCond %{HTTP_HOST} ^(?:www.)?(.+)$ 

Четвертая строка — она соответствует имени хоста входящего запроса, и разделяет его на www часть (если таковая имеется), и остальную часть имени хоста. Мы будем ссылаться на нее позже с помощью %1 в RewriteRule.

Если вы знаете имя хоста заранее, то можно улучшить правило редиректа с http на https, встроив URL и пропустив это условие (пример ниже):

RewriteRule ^ https://www.%1%{REQUEST_URI} 

RewriteRule – центральный элемент перенаправления. С помощью этой строки мы предписываем Apache перенаправить любой запрос на новый URL, который состоит из:

  • https: // WWW;
  • %1: Ссылка на без-WWW часть хоста;
  • %{REQUEST_URL}: URL-запрос, без имени хоста.

Все эти маркеры соединены друг с другом, и представляют собой конечный URL перенаправления. В конце мы добавляем три флага:

  • NE — чтобы не выйти из специальных символов;
  • R=301 — использовать HTTP статус 301 редиректа;
  • L — прекратить обработку других правил, и немедленно перенаправить.

Меняем во внутренних ссылках http на https

Во внутренних ссылках лучше всего использовать относительные адреса, а не абсолютные:

  • абсолютный адрес: https://elims.org.ua/about/
  • относительный адрес: /about/

Относительные адреса не только облегчают перенос сайта с одного домена на другой и переход с http на https, но они не так нагружают хостинг, когда служебные процессы обращаются к этим ссылкам. Только не всегда получается придерживаться этого правила.

Очень часто при публикации какого-либо контента во внутренних ссылках используются абсолютные адреса — так быстрей: скопировал ссылку из адресной строки и вставил в текст, без редактирования и вырезания лишней части. В таком случае во всех внутренних ссылках нужно заменить http на https.

Делаем SQL запрос в базе данных, на примере моего сайта:

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://elims.org.ua', 'https://elims.org.ua');

Или же можно сразу сделать все ссылки относительными:

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://elims.org.ua/', '/');

Как делаются такие запросы я уже писал в записи «WordPress: как заменить текст в блоге (базе данных)».

Эта замена происходит только по контенту в записях и страницах. В меню и шаблоне ссылки не затрагиваются чтобы случайно ничего не сломать, изменив какие-либо настройки.

Поэтому было бы еще хорошо обнаружить оставшиеся внутренние ссылки с http. В этом может помочь такой инструмент как Xenu (я о нем писал в записи «SEO: Xenu — бесплатный аудит сайта и мертвых ссылок»):

Переадресация с http на https

При переезде сайта с http на https (установка SSL-сертификата) потребуется код, который не требует дополнительных модификаций:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1

Второй метод осуществляет перенос с http://domain.ru на https://domain.ru:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{HTTP_HOST} ^domain\.ru$

RewriteRule ^(.*)$ https://domain.ru/$1

Третий способ выполняет аналогичную функцию, но отключает перенаправление для robots.txt:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{REQUEST_URI} !robots.txt

RewriteRule ^(.*)$ https://domain.ru/$1

В 4-й версии конечным пунктом для пользователя станет https://www.domain.ru:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{HTTP_HOST} ^domain\.ru$

RewriteRule ^(.*)$ https://www.domain.ru/$1

Позволяет сделать форвардинг с http://www.poddomen.domain.ru на https://poddomen.domain.ru:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.poddomen\.domain\.ru$

RewriteRule ^(.*)$ https://poddomen.domain.ru/$1

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1

Последняя версия, дающая возможность сделать связь между http://poddomen.domain.ru на https://www.poddomen.domain.ru:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^poddomen\.domain\.ru$

RewriteRule ^(.*)$ https://www.poddomain.domain.ru/$1

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1

Как влияет редирект с http на https на SEO

После настроек редиректа с http на https обязательно измените адрес своего ресурса robots. txt (нужно  указать новое главное зеркало в панели вебмастера для поисковиков).

Позиции сайта первое время после установки редиректа могут снизиться, но лишь на небольшой промежуток времени. Чем раньше вы выполните перенастройку, тем менее значительные скачки будут по SEO выдаче.

Рекомендации, которые предоставил Яндекс в отношении данного редиректа:

  1. Добавить ресурс в панель Яндекс-вебмастер.
  2. Произвести настройку в robots директивы Host  (нужно, чтобы robots. txt нового и старого ресурса не отличался).
  3. После того, как оба сайта будут признаны зеркалами, необходимо изменить протокол в сервисе «Настройки индексирования — Главное зеркало». Через несколько недель будет определено основное зеркало.
  4. Установить перенаправление со старого протокола на новый.

Рекомендации по редиректу от Google:

  1. Добавить ресурс в Search Console.
  2. Проверить наличие редиректа 301 со всех страниц на новый сайт (редирект страницы с http на https).
  3. Использовать сервис «Изменение адреса в настройках».

Редирект с http на https поможет в продвижении сайта только тогда, когда с вашим ресурсом все в порядке. А узнать, все ли хорошо с вашим сайтом, поможет наш аудит.

Оставить заявку

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий