Перенаправить http на https в apache
Содержание:
- Общие сведения
- Htaccess переадресация на https и настройка
- Конфигурация Apache
- Настройки веб-серверов в Панели управления
- Что нужно знать перед началом работыWhat do you need to know before you begin?
- Перенаправить HTTP на HTTPS, используя .htaccess
- По умолчанию требуются параметры SSL и HTTP-перенаправления на веб-сайте по умолчанию на сервере ExchangeDefault Require SSL and HTTP Redirect settings in the default website on an Exchange server
- Перенаправление запросов для отсутствующих доменов (перенаправление по умолчанию)
- Правильный перевод сайта на HTTPS
- Как смена протокола влияет на SEO
- HTTPS и редиректы
- Перенаправить все сайты на HTTPS
- Создание и редактирование .htaccess
- Редирект с протокола http на https.
- Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы
- Различия между http и https
- Редирект с http на https WordPress
- Шаг 2: Покупка SSL сертификата
- Подготовка
- Правильный редирект с http на https
- Выполнять редирект http на https или нет
- Как настроить сайт и сохранить трафик
- Шаг 1: Подготовка сайта
Общие сведения
.htaccess — это конфигурационный файл веб-сервера Apache, который позволяет задавать различные настройки для работы веб-сервера, применяемые для конкретных каталогов пользователя.
Параметры, указанные в .htaccess, не затрагивают настройки главного конфигурационного файла Apache и имеют силу только для каталога, в котором этот файл размещен, и его подкаталогов. Для подкаталогов также можно создавать дополнительные .htaccess-файлы; при этом необходимо учитывать, что настройки .htaccess, заданные в подкаталоге, переопределят настройки, назначенные для него в файле .htaccess, размещенном на уровне выше.
Htaccess переадресация на https и настройка
Во избежание обращения к глобальному конфигу httpd.conf, достаточно использовать файл дополнительных конфигураций, именуемый htaccess. Его расположение приходится на каталог ресурса. Благодаря ему, редирект на https не вызывает проблем.
Допускается использование текстовых редакторов: vim, nano, mcedit. Внутри файла необходимо прописывать:
Если не прослеживается работа htaccess редирект на https, то применимо настраивание посредством htaccess:
Это предусматривает работу правила Redirect 301, заход на веб-страницу http выведет информацию о перемещении на https. Для корректного функционирования следует произвести сохранение файла.
Конфигурация Apache
Перед тем, как сделать редирект с https на http, добавьте следующее правило перенаправления в файл конфигурации Apache (если у вас есть доступ к нему), либо в файл .htaccess, расположенный в корневом каталоге вашего сайта:
RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www. RewriteCond %{HTTP_HOST} ^(?:www.)?(.+)$ RewriteRule ^ https://%1%{REQUEST_URI}
Если вместо example.com вы хотите использовать по умолчанию URL www.example.com, то просто измените третью и пятую строки:
RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} !^www. RewriteCond %{HTTP_HOST} ^(?:www.)?(.+)$ RewriteRule ^ https://www.%1%{REQUEST_URI}
Настройки веб-серверов в Панели управления
В настройках базового веб-сервера вы можете изменять все директивы PHP, значение графы Changeable для которых соответствует PHP_INI_PERDIR или PHP_INI_ALL. Эти настройки будут иметь силу на всех сайтах, которые работают на этом веб-сервере.
Управлять абсолютно всеми параметрами PHP вы можете на расширенном веб-сервере, редактируя php.ini через его настройки.
Чтобы установить индивидуальные параметры PHP для отдельного сайта, используйте файл .htaccess. Через него можно управлять всеми параметрами, доступными для изменения на базовом веб-сервере – примеры самых востребованных перечислены ниже.
По умолчанию отображение ошибок PHP на хостинге отключено. Для того чтобы видеть текст ошибок PHP на странице сайта, добавьте в файл .htaccess директиву:
Для того чтобы сохранять, изучать и исправлять ошибки включите их сбор и хранение с помощью следующих строк:
Директория в пути расположения файла должна существовать, а если ее нет — обязательно создайте папку вручную. Файл журнала будет создан при появлении первой ошибки.
Для изменения ограничения на оперативную память для выполнения процесса используйте следующую директиву в .htaccess:
Вместо 512M укажите желаемый размер ограничения
Обратите внимание, что символ «M» (латинская M) указывается слитно со значением. Уточнить максимальное значение оперативной памяти, доступное по тарифу, можно в
Чтобы увеличить время выполнения скриптов (в секундах), добавьте следующую директиву в .htaccess:
Вместо 300 укажите желаемый размер ограничения
Обратите внимание, что выполнение скрипта более чем в 10 минут (600 секунд) завершится ошибкой с кодом 504
Если вам нужно загружать файлы бóльшего размера, либо же ограничить их объем (чтобы контролировать дисковую квоту), то управлять объемом загружаемого файла можно через .htaccess:
Вместо 200M укажите желаемый размер ограничения
Обратите внимание, что символ «M» (заглавная латинская M) указывается слитно со значением
Максимальный размер передаваемых переменных определяется с помощью следующей директивы:
Вместо 15000 укажите необходимый размер ограничения, который требует CMS сайта.
Если страница в браузере загружается некорректно и вместо привычных символов на сайте отображаются иероглифы, добавьте в файл .htaccess строки:
Вместо «windows-1251» подставьте подходящую кодировку, например, UTF-8. Проверить, в какой именно кодировке написан сайт, можно через инструменты используемого браузера. Если сайт не обрел корректный вид, обратитесь за помощью в службу технической поддержки.
Чтобы заставить интерпретатор PHP обрабатывать файлы с произвольным расширением, (например, .phtml), добавьте в файл .htaccess следующую строку:
Изменение времени хранения сессий может потребоваться, если вы хотите, чтобы данные об авторизации пользователей на вашем сайте сохранялись дольше.
По умолчанию время хранения сессий — 1440 секунд (24 минуты). Для изменения этого значения добавьте в .htaccess следующие директивы:
Обратите внимание: при большом количестве посетителей и длительном времени сохранения сессий в папке, указанной в session.save_path, образуется большое количество файлов. Это может вызывать замедление сайта в момент очистки старых сессий и увеличивать количество потребляемых ресурсов
Альтернативные механизмы хранения и очистки сессий:
- Указывать вложенность директорий хранения сессий с помощью аргумента N в session.save_path и очищать старые сессии собственными скриптами ( в документации PHP).
- Реализовать собственный механизм хранения сессий (например, в MySQL) и установить его с помощью функции session_set_save_handler.
Что нужно знать перед началом работыWhat do you need to know before you begin?
-
Предполагаемое время выполнения процедуры: 15 минут.Estimated time to complete this procedure: 15 minutes.
-
Для выполнения этих процедур необходимы соответствующие разрешения. Сведения о необходимых разрешениях см. в статье запись «Диспетчер IIS» в разделе статьи Разрешения клиентов и мобильных устройств, посвященном разрешениям Outlook в Интернете.You need to be assigned permissions before you can perform this procedure or procedures. To see what permissions you need, see the «IIS Manager» entry in the Outlook on the web permissions section of the Clients and mobile devices permissions topic.
-
Процедуры в этом разделе могут привести к web.config файлу, который будет создан в папке .The procedures in this topic might cause a web.config file to be created in the folder . Если в дальнейшем отключить перенаправление HTTP для Outlook в Интернете, Outlook может зависать, когда пользователи выбирают команду Отправка и получение.If you later remove http redirection for Outlook on the web, Outlook might freeze when users click Send and Receive. Чтобы предотвратить замораживание Outlook после удаления перенаправления http, удалите файл web.config в .To prevent Outlook from freezing after you remove http redirection, delete the web.config file in .
-
Теперь для шифрования данных, которыми обмениваются компьютерные системы, используется протокол TLS вместо протокола SSL. Эти протоколы настолько сходны между собой, что термины «SSL» и «TLS» (без версий) часто используются как взаимозаменяемые. Поэтому когда в статьях по Exchange, Центр администрирования Exchange и Командная консоль Exchange упоминается термин «SSL», часто под ним подразумевается как протокол SSL, так и протокол TLS. Как правило, термин «SSL» обозначает именно протокол SSL только в тех случаях, когда указан номер версии (например, SSL 3.0). О том, почему следует отключить протокол SSL и перейти на протокол TLS, см. в статье Как устранить уязвимость SSL 3.0.Secure Sockets Layer (SSL) is being replaced by Transport Layer Security (TLS) as the protocol that’s used to encrypt data sent between computer systems. They’re so closely related that the terms «SSL» and «TLS» (without versions) are often used interchangeably. Because of this similarity, references to «SSL» in Exchange topics, the Exchange admin center, and the Exchange Management Shell have often been used to encompass both the SSL and TLS protocols. Typically, «SSL» refers to the actual SSL protocol only when a version is also provided (for example, SSL 3.0). To find out why you should disable the SSL protocol and switch to TLS, check out Protecting you against the SSL 3.0 vulnerability.
-
Сочетания клавиш для процедур, описанных в этой статье, приведены в статье Сочетания клавиш в Центре администрирования Exchange.For information about keyboard shortcuts that may apply to the procedures in this topic, see Keyboard shortcuts in the Exchange admin center.
Совет
Возникли проблемы? Попросите помощи на форумах Exchange. Перейти на форумы можно по следующим ссылкам: Exchange Server, Exchange Online или Exchange Online Protection.Having problems? Ask for help in the Exchange forums. Visit the forums at: Exchange Server, Exchange Online, or Exchange Online Protection.
Перенаправить HTTP на HTTPS, используя .htaccess
.htaccess – это файл конфигурации для каждого каталога для веб-сервера Apache. Этот файл используется для определения того, как Apache обслуживает файлы из каталога, в котором он находится, и включает/отключает дополнительные функции.
Как правило, файл .htaccess находится в корневом каталоге домена, но вы можете иметь другие файлы .htaccess в подкаталогах.
Вы можете редактировать файл .htaccess (или создавать новый) через SSH или FTP.
Чтобы перенаправить HTTP-запросы в HTTPS, откройте файл .htaccess и добавьте следующий код:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
Вот что делает каждая строка кода:
- RewriteEngine On – Включает возможности перезаписи и позволяет нам использовать правила перезаписи.
- RewriteCond %{HTTPS} off – Проверяет, имеет ли соединение тип HTTP-запроса. Когда условие выполнено, следующая строка выполняется. Мы только хотим перенаправить HTTP-запросы. Если вы пропустите это условие, вы получите цикл перенаправления.
- RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} – Перенаправить все HTTP-запросы в HTTPS с кодом состояния 301 (постоянно перемещено). Это правило перепишет http://example.ru/about в https://example.ru/about или http://www.example.ru/about на https://www.example.ru/about
Если в файле есть другие правила, добавьте код перезаписи вверху файла.
Все! После добавления этих строк сохраните файл и обновите браузер. Все HTTP-запросы должны быть перенаправлены на HTTPS.
При редактировании файла .htaccess вам не нужно перезагружать сервер, потому что Apache читает файл при каждом запросе.
Вот еще одно, общее правило для перенаправления с HTTP на HTTPS:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
- HTTP_HOST – Имя хоста, которое запрашивает посетитель при доступе к сайту. Эта переменная представляет ваше доменное имя.
- REQUEST_URI это URI, который используется для доступа к странице.
По умолчанию требуются параметры SSL и HTTP-перенаправления на веб-сайте по умолчанию на сервере ExchangeDefault Require SSL and HTTP Redirect settings in the default website on an Exchange server
Параметры SSL и HTTP-перенаправления для веб-сайта по умолчанию и все виртуальные каталоги по умолчанию на сервере Exchange описаны в следующей таблице.The default Require SSL and HTTP Redirect settings for the default website and all virtual directories in the default website on an Exchange server are described in the following table.
Веб-сайтWebsite | Виртуальный каталогVirtual directory | Требовать SSLRequire SSL | Перенаправление HTTPHTTP Redirect |
---|---|---|---|
Веб-сайт по умолчаниюDefault Web Site | Н/дn/a | даyes | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | APIAPI | даyes | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | aspnet_client (каталог)aspnet_client (directory) | Даyes | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | AutodiscoverAutodiscover | даyes | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | ecpecp | даyes | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | EWSEWS | даyes | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | mapimapi | даyes | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | Microsoft-Server-ActiveSyncMicrosoft-Server-ActiveSync | Даyes | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | OABOAB | даyes | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | owaowa | Даyes Подкаталоги:Subdirectories: • auth: да• auth: yes • Календарь: нет• Calendar: no • Интегрировано: да• Integrated: yes • oma: да• oma: yes | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | PowerShellPowerShell | Нетno | Нетnone |
Веб-сайт по умолчаниюDefault Web Site | RpcRpc | Нетno | нетnone |
Перенаправление запросов для отсутствующих доменов (перенаправление по умолчанию)
Если обращение к веб-серверу идет по IP-адресу или домену, который не прописан в конфигурационном файле, можно перенаправить весь трафик на домен по умолчанию:
server {
listen 80 default_server;
return 302 https://welcome.domain.ru$request_uri;
}
или независимо от протокола:
server {
listen 80 default_server;
return 302 $scheme://welcome.domain.ru$request_uri;
}
server {
listen 443 default_server;
return 302 $scheme://welcome.domain.ru$request_uri;
ssl on;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
}
* $scheme позволяет перевести запрос на тот же протокол (http или https), по которому он был инициирован.
* если nginx должен слушать и обрабатывать запросы по https, необходимо указывать в настройках пути к сертификатам.
Правильный перевод сайта на HTTPS
После покупки SSL-сертификата и его установки — важно грамотно перевести сайт на HTTPS. Под правильным переводом подразумевается:
-
Настройка корректного отображения сайта для пользователей.
-
Правильная индексация поисковыми системами — одной версии (зеркала) и направление трафика на неё.
-
Сохранение/увеличение трафика из поиска и прочих источников.
Если сайт уже индексируется поисковыми системами и привлекает целевой трафик, то полный переход на HTTPS затребует время на смену главного зеркала сайта.
Итак, для грамотного переезда на HTTPS, сохранения уровня трафика и роста конверсии требуется:
Купить и установить на сервер проверенный SSL-сертификат. Подойдёт любой крупный партнер. Самый сильный игрок на этом рынке — компания Symantec, которая владеет такими центрами сертификации как Thawte, Verisign и Geotrust.
Проверить, что все ссылки внутри домена ведут на страницы HTTPS-версии. В том числе: ссылки в XML-карте сайта, шаблонах, подключаемых стилях и прочие. Отдельно упомянем настройки, которые были произведены со «старой» версией, теперь все их надо перенести на HTTPS, скажем, файлы загруженные в Google Disavow Tool, ссылки на действующие XML-карты сайта в панелях.
Проверить, что весь подключаемый контент доступен именно по HTTPS. В частности, все подгружаемые аудио- и видеофайлы и скрипты должны указывать на защищенный протокол (Яндекс.Карты, YouTube и так далее).
Проверить визуально корректность отображения HTTPS-версии для пользователей.
Добавить обе версии в панели вебмастера Яндекса и Google.
Настроить в панелях вабмастеров переезд на версию с HTTPS и проконтролировать, что поисковый трафик из Яндекса полностью переключился на HTTPS-версию (по данным Яндекс.Метрики / Google Analytics).
Настроить 301-редиректы со всех второстепенных вариантов написания на новое основное зеркало и проверить их отработку. Все редиректы должны быть в один шаг и все с кодом 301
Это важно.
Для удобства и проверки верного кода можно использовать инструмент «Сервис для массовой проверки ответа сервера» от Пиксель Тулс.
Рис. 4. Проверка корректности отработки 301-редиректов на основное зеркало. Верная настройка с переадресацией со всех второстепенных зеркал в один шаг.
Для полного контроля рекомендуется проверять корректность работы с помощью бесплатных сервисов, пример — SSL Checker. Часто, на уже работающих сайтах имеются ошибки в настройках или установке SSL-сертификата.
Рис. 5. Работа сервиса SSL Checker, осуществляющего бесплатную проверку установки SSL-сертификата.
Как смена протокола влияет на SEO
Не забудьте сменить адрес сайта в robots.txt, указать новое главное зеркало в панели вебмастера поисковых систем.
Обычно позиции после смены протокола проседают, трафик уменьшается, но носит это временный характер. Поэтому, чем раньше Вы решитесь на переход, тем меньше будет последствий в плане SEO.
В данный момент Google обещает отдавать предпочтение сайтам с https, как оно будет на практике покажет время.
Рекомендации Яндекса
Яндекс дал свои рекомендации по переезду, подробнее тут. Обязательно рекомендую изучить. Если коротко:
Добавить новый сайт в панель вебмастера Настроить в robots директиву Host, важно, чтобы robots.txt был одинаковый у обоих сайтов. Не актуально.
После признания обоих сайтов зеркалами, зайти и сменить протокол в вебмастере “Настройки индексирования — Главное зеркало”
Подождать несколько недель, пока не определиться главное зеркало. Настроить редирект со старого протокола на новый.
Рекомендации Google
Про перенос сайта для Google можно прочитать тут и тут.
- Добавить новый сайт в Search Console
- Убедиться, что со старого сайта с каждой страницы идет 301 редирект на новый
Как правильно переехать без потери позиций
- Убеждаемся, что все страницы правильно работают с https
- Прописываем в robots дерективу Host с https. Не актуально.
- Добавляем новый сайт (с https) в Вебмастер Яндекса
- Ставим редиректы 301 с http на https
- Добавляем новый сайт в Вебмастер Гугла
Мне нравится9Не нравится1
HTTPS и редиректы
Рассмотрим пример. Допустим, что у нас есть сайт dnsimple.com. Его канонический URL-адрес — https://dnsimple.com. Тем не менее, существует четыре различных способа, с помощью которых можно подключиться к сайту, и нужно обеспечить, чтобы при любом из них пользователь перенаправлялся на https://dnsimple.com:
Исходный способ | Тип |
http://dnsimple.com | HTTP + no-www |
https://dnsimple.com | HTTPS + no-www |
http://www.dnsimple.com | HTTP + www |
https://www.dnsimple.com | HTTPS + www |
Настройка htaccess редиректов HTTP на HTTPS часто является причиной путаницы. Не всегда понятно, как правильно обрабатывать через HTTPS редиректы с WWW на не-WWW (или наоборот), и почему для этого нужен сертификат SSL / TLS. Чтобы правильно настроить эти перенаправления, необходимо понять основные принципы обработки запросов HTTPS.
Далее мы рассмотрим, в каком порядке устанавливается соединение по протоколу HTTPS, как происходит обработка HTTP-запросов и настройка редиректов с поддержкой HTTPS.
Перенаправить все сайты на HTTPS
Если все веб-сайты, размещенные на сервере, настроены на использование HTTPS, и вы не хотите создавать отдельный блок HTTP-сервера для каждого сайта, вы можете создать один всеобъемлющий блок HTTP-сервера. Этот блок будет перенаправлять все HTTP-запросы на соответствующие блоки HTTPS.
Чтобы создать единый всеобъемлющий HTTP-блок, который будет перенаправлять посетителей на HTTPS-версию сайта, откройте файл конфигурации Nginx и внесите следующие изменения:
Давайте проанализируем код построчно:
- — Устанавливает этот серверный блок как блок по умолчанию (всеобъемлющий) для всех несовпадающих доменов.
- — — недопустимое доменное имя, которое никогда не соответствует ни одному реальному доменному имени.
- — Перенаправить трафик на соответствующий блок HTTPS-сервера с кодом состояния 301 (перемещен навсегда). Переменная содержит доменное имя запроса.
Например, если посетитель открывает в браузере, Nginx перенаправит запрос на .
Если возможно, предпочтительнее создавать перенаправление для каждого домена вместо глобального перенаправления HTTP на HTTPS.
Создание и редактирование .htaccess
Создать файл настроек .htaccess вы можете при помощи файлового менеджера панели управления аккаунтом.
2. Выберите пункт меню «Файл» — «Новый файл».
3. Выберите из списка расширений .htaccess.
4. Нажмите кнопку «Создать файл».
Возникновение ошибки «Имя уже используется» означает, что данный файл уже создан в текущей директории.
Для редактирования файла в файловом менеджере перейдите в директорию с данным файлом, выделите его кликом левой кнопки мыши и выберите пункт меню «Файл» — «Редактировать».
В открывшейся форме редактирования можно внести необходимые изменения в файл конфигурации: добавить или удалить директивы. Также можно закомментировать неиспользуемые настройки, для этого необходимо добавить в начале строки символ #. Настройки, указанные в таких строках, учитываться не будут.
Вы также можете редактировать .htaccess во внешних редакторах, но обратите внимание, что текстовые редакторы Windows (например, «Блокнот») при сохранении любых документов с кодировкой UTF-8 добавляют в них метки порядков байтов юникода — BOM-сигнатуры. Файлы с такой сигнатурой некорректно обрабатываются веб-сервером, поэтому мы рекомендуем редактировать .htaccess напрямую в «Файловом менеджере» или через специальный редактор «Notepad++»
Редирект с протокола 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}
Один (а не два последовательных!) 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
Различия между http и https
Сегодня многие владельцы сайтов стараются сменить протокол с http на https, так как это должно повысить защищенность сайта. Тем более если в личном кабинете хранятся персональные данные пользователей, в том числе логины и коды доступа.
Https зашифровывает весь поток информации, которой сайт обменивается с браузером. Благодаря этому третьим лицам не удастся перехватить банковские реквизиты, данные для доступа, электронные почтовые адреса и номера телефонов. Стоить SSL сертификат начинается от 15$. С ростом уровня подтверждения данных в SSL сертификате, стоимость сертификата растет.
Редирект с http на https WordPress
Редерикт должен работать по умолчанию, если вы все верно настроили в админке, если этого не произошло то можно воспользоваться советом ниже.
Не торопитесь с настраивать редирект редирект с http на https wordpress. Если к примеру для Гугла это можно сделать сразу, то с Яндексом следует повременить, дождавшись объединения доменов.
Откройте .htaccess и в начале файла вставьте следующие данные:
RewriteEngine On RewriteCond %{THE_REQUEST} ^{3,9}\ /(.*)\ HTTP/ RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING}
Если это не помогло, то попробуйте Вариант №1. Тут мы настраиваем 301 редирект в серверной части:
RewriteEngine On RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Вариант №2, используя php:
add_action('init', 'redirect_http_to_https'); function redirect_http_to_https(){ if( is_ssl() ) return; if ( 0 === strpos($_SERVER, 'http') ) wp_redirect( set_url_scheme( $_SERVER, 'https' ), 301 ); else wp_redirect( 'https://' . $_SERVER . $_SERVER, 301 ); exit; }
Этот код лучше ввести в файле functions.php темы сайта. Иначе, поменяв тему у вас слетят настройки всех редиректов. Для решения проблемы годятся все способы из перечисленных. Однако Вариант №1 считается более удачным, так как лучше, чтобы сервер обрабатывал запросы, а не PHP.
Шаг 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
У вас есть ключи и все что вам нужно сделать — это добавить их в панели своего хостинга.
Просто вставить в поля свои ключи от центра сертификации
Подготовка
Сначала нам необходимо получить сам SSL сертификат, можно его купить, можно использовать и бесплатный. В этой статье мы будем рассматривать самый простой случай, когда сертификат установит сам хостер. Вариант еще проще – получить в 2 клика бесплатный сертификат у Beget.
- Если сайт открылся – все хорошо, переходим к следующему пункту.
- Если не отрылся – подождите 10-15 минут и проверьте снова. Если нет – нужно разбираться, правильно ли установлен сертификат.
- Если произошел редирект на http версию – нужно искать в плагинах, functions.php или в htaccess правила для редиректа и удалить их
Правильный редирект с http на https
Ставить редирект не спешите. Яндекс рекомендует подождать, пока домены склеятся. Для Google можно сразу настраивать редирект. Лучше всего сначала дождаться склейки, потом ставить редирект. Подробнее про поисковые системы напишем ниже.
В файле .htaccess пропишите в начало:
Если не сработало, попробуйте
Здесь мы устанавливаем редирект на серверном уровне
Обратите внимание на то, что мы явно указываем на 301 редирект
Второй вариант, используя php:
Данный код лучше разместить в своем плагине или в папке mu-plugins, в крайнем случае в functions.php Вашей темы. Чтобы при смене темы Вы не потеряли все редиректы.
Можно использовать оба варианта, но первый предпочтительнее, чтобы запросы обрабатывал сервер, а не PHP.
Выполнять редирект http на https или нет
Протокол https – четкая эффективность получения данных безопасными путями. Такой подход возник после использования Google определения существования редиректа с http на https. Это влияло на релевантность интернет-страницы.
На данный момент это всего лишь 1% вероятности поднятия рейтинга
Google с большим вниманием станет относиться к проблемам безопасности, и это очень важно. Для пользователей наличие «замочка» в адресной строке вызовет доверие к выбранной странице
Значок «замочка» указывает на наличие протокола https. При его отсутствии наблюдается снижение уровня доверия, и возникает высокая вероятность того, что читатель уйдет на страницу конкурента.
Применение протокола https предусматривает 3-уровневую защиту данных:
- Кодирование. Раскодирование возможно при наличии ключа, что исключает доступ посторонними лицами.
- Редирект с http на https – обеспечение целостного хранения информации и отсутствие искажений.
- Авторизация не позволяет мошенникам использовать ваши вводимые данные в своих целях.
Преимущества защищенного протокола:
- повышении позиции в поисковике, что гарантирует положительный эффект релевантности;
- контроль и защита данных пользователя.
Как настроить сайт и сохранить трафик
3.1. Раньше перед настройкой 301 редиректов в панели для Вебмастеров Яндекса в разделе «Настройки индексирования» → «Главное зеркало» нужно было выбрать пункт «Установить протокол https». Эта опция уже не работает: Сейчас необходимо отправлять заявку на смену протокола в инструменте «Переезд сайта», который доступен в новой версии Яндекс.Вебмастера
Обратите внимание, процесс переклейки зеркал происходит автоматически и может занимать несколько недель. Ускорить его, к сожалению, нельзя
Именно эти первые несколько недель выдачу может «штормить». По наблюдениям, Google с этим быстро справляется, Яндекс — немного дольше.
3.2. В файле robots.txt замените строку host, прописав в ней не просто доменное имя, а доменное имя вместе с https:
Host: https://site.com
Строку с картой сайта также нужно обновить.
3.3. Далее добавьте сайт HTTPS в Google Search Console. Здесь обновите XML-карту сайта, если нужно — выставьте регион. Если у вас есть отклоненные ссылки в Disavow Tool, не забудьте заново загрузить файл с ними.
3.4. Самое главное — настройка 301 редиректов (постоянных перенаправлений) со старого адреса с HTTP на новый с HTTPS. После настройки проверьте, чтобы изображения были доступны по HTTPS, проверьте все типы страниц. Например, страницы фильтров, страницы карточек-товаров, прайс-листы, категории, служебные страницы и тому подобное. Все они должны быть доступны по HTTPS.
При этом файл robots.txt и XML-карта сайта должны быть доступны и по http, и по https. В htacess при настройке редиректов исключение для файла роботс можно настроить строкой:
Время: 30 минут.
Шаг 1: Подготовка сайта
Многих сложностей может не быть вообще, если изначально за сайтом следили и делали все чисто и без костылей.
Бэкап
Любое вмешательство в жизнь сайта (если это не простые действия с контентом или вы не самоуверенный программист) начинается с бэкапа, т.к. в случае появления проблем — вы быстро восстанавливаете данные и программист уходит все делать на своем серваке.
Относительные ссылки
Когда на сайте абсолютные ссылки вида http://romanus.ru/page-name — это может быть проблемой, т.к. их нужно:
- Либо заменить на относительные вида /page-name;
- Либо в абсолютных заменить протокол на https.
Я бы выбирал 1 вариант, т.к. он более гибкий и пригодится не только в решении текущей задачи. Однако и там есть свои минусы, но это не тема данной статьи.
Уверен, на любом сайте вы найдете волшебную таблетку (пример замены домена в статьях):
Пример замены домена через SQL-запрос: кто-то его проверял?
Почему люди везде это пишут — хз, видимо никто не проверял работоспособность т.к. этот вариант просто не работает. SQL запрос не может заменить домен в ячейке, содержащей целый текст, т.к. это просто замена в лоб (как в Excel). Т.е. вы не можете заменить ячейку, если она не равняется вашему тексту (читай, ячейка = текст и ничего более).
Но у нас же в ячейках текст статей в html формате.
Даю 2 рабочих вариант:
- Для понимающих (хотя им не нужно объяснять). Идем в PhpMyAdmin, экспортируем нашу базу данных (или конкретную таблицу, в которой нужно сделать изменения). Далее открываем редактором типа Sublime или Notepad++ и через замену все меняем. Далее импортируем исправленный вариант обратно в нашу базу данных.
- Чтобы не накосячить. Во многих 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 протоколам. Я не делаю этого — проблем не замечал, но держу вас в курсе.