301 редирект c http на https через htaccess
Содержание:
- Настраиваем отображение сайта
- Другие настройки (CGI, Python, Node.js)
- Этап 1. Удаление параметра «Требовать SSL» для веб-сайта по умолчанию с помощью диспетчера служб IISStep 1: Use IIS Manager to remove the Require SSL setting from the default website
- Как влияет редирект с http на https на SEO
- Различия между http и https
- Редирект в JavaScript
- Синтаксис .htaccess
- Что такое RivaTuner Statistics Server? Как установить, настроить и пользоваться программой?
- Возможные проблемы при использовании SSL
- Проксирование
- Перенаправление остальных элементов
- Настраиваем редиректы для SEO
- Правила Redirect
- Nginx
- Включение HSTS
- Видеоматериал
- Переадресация 301 с http на https
- Путь хранения файлов сессий
- Как настроить редирект с http на https через htaccess
- Как отключить переадресацию?
- Параметры по умолчанию требуют SSL и перенаправления HTTP на веб-сайте по умолчанию на сервере ExchangeDefault Require SSL and HTTP Redirect settings in the default website on an Exchange server
- Что-то пошло не так и на сайт нельзя зайти
- Редирект с http на https WordPress
Настраиваем отображение сайта
Посмотрим, что можно сделать с отображением всего ресурса или его разделов в браузерах пользователей при помощи .htaccess.
10. Заменяем индексный файл
Индексный файл — тот, что открывается по умолчанию при обращении к определенному каталогу. Обычно они называются: index.html, index.htm, index.php, index.phtml, index.shtml, default.htm, default.html.
Вот как это выглядит в структуре каталога:
Чтобы заменить этот файл на любой другой, размещаете в каталоге .htaccess и добавляете эту команду:
Вместо «hello.html» вписывайте адрес желаемого файла.
Можно задать последовательность файлов, которые будут открываться в указанном порядке, если один из них будет недоступен:
11. Добавляем или убираем html в конце URL
Сохранять или убирать расширение файлов в URL — дело вкуса каждого оптимизатора. Достоверных исследований влияния расширений в адресах на ранжирование ресурса нет, но каждый вебмастер имеет свое мнение по этому поводу.
Чтобы убрать .html:
Этими же директивами можно добавить/убрать расширение php.
12. Настраиваем кодировку
Чтобы избежать ошибок в отображении ресурса браузером, нужно сообщить ему, в какой кодировке создан сайт. Самые популярные:
- UTF-8 — универсальная
- Windows-1251 — кириллица
- Windows-1250 — для Центральной Европы
- Windows-1252 — для Западной Европы
- KOI8-R — кириллица (КОИ8-Р)
Чаще всего используют UTF-8 и Windows-1251.
Если кодировка не указана в метатеге каждой страницы, можно задать ее через .htaccess.
Пример директивы, которая задает для файла кодировку UTF-8:
А такая команда означает, что все загружаемые на сервер файлы будут преобразованы в Windows-1251:
В примерах приведены разные кодировки, но в рамках одного сайта кодировки в этих директивах должны совпадать.
13. Создаем кастомные страницы ошибок
При помощи правил в .htaccess можно настроить отображение специально созданных страниц для самых популярных ошибок, например:
Перед тем, как прописывать директивы, создайте в корне сайта папку error и разместите туда соответствующие файлы для страниц ошибок.
Зачем это нужно? Например, чтобы не потерять пользователя на странице 404, а дать ему возможность перейти в другие разделы сайта:
Другие настройки (CGI, Python, Node.js)
Инструкция по настройке сервисов находится в соответствующем разделе .
Директивы SSI (Server Side Includes) по умолчанию обрабатываются в файлах с расширением .shtml (например, index.shtml). Чтобы SSI обрабатывались и в других файлах, необходимо в файле .htaccess указать типы этих файлов:
Вместо «.ssi .html» укажите расширения файлов, в которых должны обрабатываться директивы SSI. Использовать в одном и том же файле PHP и SSI одновременно не рекомендуется.
Для выполнения скриптов CGI в какой-либо папке необходимо настроить веб-сервер соответствующим образом с помощью файла .htaccess. В папке, в которой должны выполняться скрипты CGI, создайте файл .htaccess вида:
Вместо «.cgi .pl» укажите список расширений, которые должны обрабатываться как скрипты. С помощью Файлового менеджера или FTP-клиента установите файлам скриптов права на выполнение (755).
Проектам на языке Python необходим файл .htaccess с таким содержанием:
Чтобы обрабатывать скрипты Node.js, укажите в .htaccess следующие директивы:
Замените example.com на основное имя вашего сайта, а login на логин вашего аккаунта.
Если вы не нашли ответа на свой вопрос в этом разделе, то вы всегда можете обратиться к нам за помощью через форму обратной связи в разделе «Поддержка» Панели управления.
Этап 1. Удаление параметра «Требовать SSL» для веб-сайта по умолчанию с помощью диспетчера служб IISStep 1: Use IIS Manager to remove the Require SSL setting from the default website
-
Откройте диспетчер служб IIS на сервере Exchange. Открыть диспетчер служб IIS в Windows Server 2012 или более поздних версиях легко. Просто нажмите клавишу Windows+Q, введите в строке поиска inetmgr и в списке результатов выберите Диспетчер служб IIS.Open IIS Manager on the Exchange server. An easy way to do this in Windows Server 2012 or later is to press Windows key + Q, type inetmgr, and select Internet Information Services (IIS) Manager in the results.
-
Разверните узел сервера, а затем раздел Сайты.Expand the server, and expand Sites.
-
Выберите веб-сайт по умолчанию.Select Default Web Site. и убедитесь, что в нижней части страницы выбрано представление «функции «.and verify Features View is selected at the bottom of the page.
-
В разделе IIS дважды щелкните элемент Параметры SSL.In the IIS section, double-click SSL Settings.
-
На странице Параметры SSL снимите флажок Требовать SSL, а затем на панели Действия нажмите кнопку Применить.On the SSL Settings page, clear the Require SSL check box, and in the Actions pane, click Apply.
Примечание. Чтобы выполнить эту процедуру в командной строке, откройте командную строку с повышенными привилегиями на сервере Exchange Server (для этого выберите Запуск от имени администратора) и выполните следующую команду:Note: To perform this procedure on the command line, open an elevated command prompt on the Exchange server (a Command Prompt window you open by selecting Run as administrator) and run the following command:
Как влияет редирект с http на https на SEO
После настроек редиректа с http на https обязательно измените адрес своего ресурса robots. txt (нужно указать новое главное зеркало в панели вебмастера для поисковиков).
Позиции сайта первое время после установки редиректа могут снизиться, но лишь на небольшой промежуток времени. Чем раньше вы выполните перенастройку, тем менее значительные скачки будут по SEO выдаче.
Рекомендации, которые предоставил Яндекс в отношении данного редиректа:
- Добавить ресурс в панель Яндекс-вебмастер.
- Произвести настройку в robots директивы Host (нужно, чтобы robots. txt нового и старого ресурса не отличался).
- После того, как оба сайта будут признаны зеркалами, необходимо изменить протокол в сервисе «Настройки индексирования — Главное зеркало». Через несколько недель будет определено основное зеркало.
- Установить перенаправление со старого протокола на новый.
Рекомендации по редиректу от Google:
- Добавить ресурс в Search Console.
- Проверить наличие редиректа 301 со всех страниц на новый сайт (редирект страницы с http на https).
- Использовать сервис «Изменение адреса в настройках».
Редирект с http на https поможет в продвижении сайта только тогда, когда с вашим ресурсом все в порядке. А узнать, все ли хорошо с вашим сайтом, поможет наш аудит.
Оставить заявку
Различия между http и https
Сегодня многие владельцы сайтов стараются сменить протокол с http на https, так как это должно повысить защищенность сайта. Тем более если в личном кабинете хранятся персональные данные пользователей, в том числе логины и коды доступа.
Https зашифровывает весь поток информации, которой сайт обменивается с браузером. Благодаря этому третьим лицам не удастся перехватить банковские реквизиты, данные для доступа, электронные почтовые адреса и номера телефонов. Стоить SSL сертификат начинается от 15$. С ростом уровня подтверждения данных в SSL сертификате, стоимость сертификата растет.
Редирект в JavaScript
Метод позволяет заменить одну страницу другой таким образом, что это замещение не будет отражено в истории просмотра HTML-страниц (history) браузера
location.replace("https://www.google.com"); document.location.replace("https://www.google.com");
Метод полностью моделирует поведение браузера при нажатии на кнопку в панели инструментов. Если вызывать метод без аргумента или указать его равным , то браузер проверит время последней модификации документа и загрузит его либо из кеша (если документ не был модифицирован), либо с сервера.
Такое поведение соответствует нажатию на кнопку . Если в качестве аргумента указать , то браузер перезагрузит текущий документ с сервера. Такое поведение соответствует одновременному нажатию на и кнопки клавиатуры .
window.location.reload("https://www.google.com");
Следующие примеры тоже перенаправят на google:
location="https://www.google.com"; document.location.href="https://www.google.com";
С помощью функции возможно реализовать задержку переадресации перед выполнением редиректа (в примере — 5 секунд):
setTimeout( 'location="https://www.google.com";', 5000 );
Простой пример редиректа с таймером:
<script type="text/javascript"> var sec=10; function Sec() { document.getElementById("sec").innerHTML=sec; sec--; if(sec==1) { location.replace("https://www.google.com") } setTimeout('Sec()',1000); } Sec(); </script> <p>Подождите пожалуйста <span style="color:red;font-weight: bold;" id="sec" name="sec">10</span> сек или перейдите по этой ссылке: <a href="https://www.google.com">https://www.google.com</a></p>
Синтаксис .htaccess
Синтаксис файла простой: каждая директива (команда) начинается с новой строки, после знака # можно добавлять комментарии, которые не будут учитываться сервером. Изменения на сайте вступают в силу сразу, перезагрузка сервера не требуется.
Правила задаются в том числе при помощи регулярных выражений. Для того, чтобы их прочитать, нужно понимать значение спецсимволов и переменных. Расшифруем самые часто используемые.
Основные спецсимволы:
- ^ — начало строки;
- $ — конец строки;
- . — любой символ;
- * — любое количество любых символов;
- ? — один определенный символ;
- — последовательность символов, например, от 0 до 9;
- | — символ «или», выбирается или одна группа, или другая;
- () — иcпользуется для выбора групп символов.
Основные переменные:
- %{HTTP_USER_AGENT} — поле User-Agent, которое передает браузер пользователя;
- %{REMOTE_ADDR} — IP адрес пользователя;
- %{REQUEST_URI} — запрашиваемый URI;
- %{QUERY_STRING} — параметры запроса после знака ?.
Для тех, кто хочет основательно погрузиться в тему, — полная официальная документация по использованию .htaccess или хороший ресурс на русском. А мы пройдемся по основным возможностям файла для оптимизации вашего сайта.
Что такое RivaTuner Statistics Server? Как установить, настроить и пользоваться программой?
Возможные проблемы при использовании SSL
Стоит обратить внимание на возможные проблемы при использовании SSL:
В том случае, если Ваш сайт проиндексирован поисковыми системами, при использовании SSL поисковые системы первое время будут считать сайты, доступные через HTTP и HTTPS, разными. Автоматическая склейка зеркал может занимать до 2 месяцев, за это время сайт может потерять свои позиции. Правильным решением будет указать поисковой системе на эквивалентность этих сайтов с помощью директивы host в файле robots.txt, например:
Подробности о корректной миграции сайта с HTTP на HTTPS для поисковых систем описаны в справочных страницах и Яндекс.
- Так как поисковые системы будут видеть несколько одинаковых страниц на разных доменах, рекомендуется указывать основную страницу, которая будет указываться при переходе из поисковой системы. Сделать это можно, поправив все ссылки на «rel=canonical», более подробно об этом можно прочесть в документации Google.
- Если на Вашем сайте используются сторонние виджеты, например, чат, телефония, статистика — их также необходимо перевести на протокол HTTPS.
- Возможны проблемы со сторонними сервисами, которые грузили данные с Вашего сайта и не понимают 301/302 редирект после перевода его на HTTPS. Для того, чтобы восстановить их работу, рекомендуем проконсультироваться с поддержкой этих сервисов.
Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел «Помощь и поддержка».
Проксирование
Проксирование, в отличие от редиректа, не передает инструкции браузеру перейти на другой url — NGINX сам выполняет http-запрос по другому адресу и возвращает готовый ответ. Эта возможность может применяться для внутреннего распределения серверных ресурсов.
Хоть это и не совсем редирект, рассмотрим примеры его настройки, так как очень часто нужно не перенаправление, а, как раз, обратное проксирование.
1. На другой сервер
Пример внутреннего перенаправления http-запроса на другой веб-сервер:
…
location / {
proxy_pass $scheme://192.168.0.15:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
* в данном случае, принимать запросы от браузера и отвечать на них будет NGINX, а сама обработка будет выполняться на сервере с IP-адресом 192.168.0.15 на порту 8080.
Использование NGINX в качестве http-прокси:
server {
…
server_name site1.ru www.site1.ru;
location / {
proxy_pass http://192.168.1.21/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
…
server_name site2.ru www.site2.ru;
location / {
proxy_pass http://192.168.1.22/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
* в данном примере запросы на site1.ru будут перекинуты на сервер 192.168.1.21, а запросы на site2.ru — 192.168.1.22.
HTTP proxy с авторизацией (если удаленный веб-сервер требует аутентификации):
server {
…
location / {
proxy_pass http://10.10.10.10/page/;
proxy_set_header Authorization «Basic dGVzdDp0ZXN0»;
…
}
}
* где 10.10.10.10/page — страница, на которую будут перекинуты запросы; dGVzdDp0ZXN0 — логин:пароль test:test, закодированные в формате base64.
2. Часть url на другой сервер
Выше мы рассмотрели пример перенаправления запроса по части веб-адреса. По схожему сценарию мы можем делать проксирование:
server {
…
location ~ ^/page1/(.*)$ {
proxy_pass $scheme://10.10.10.10/$1;
}
}
* и так, в данном примере при обращении по адресу site.ru/page1/<что-то еще>, nginx сделает внутренний запрос на сервер 10.10.10.10 по адресу 10.10.10.10/<что-то еще> и вернет готовый ответ.
3. На другой сайт
Мы можем сделать так, что при переходе по одному адресу у нас будет открываться совершенно другой сайт:
server {
…
location / {
proxy_pass https://www.dmosk.ru;
proxy_set_header Host www.dmosk.ru;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
* в данном случае мы при обращении к нашему серверу будем попадать на сайт https://www.dmosk.ru
Обратите внимание, что в proxy_set_header мы передаем хосту его имя — в противном случае, как правило, другой сервер вернет ошибку. Также мы не указываем proxy_redirect, иначе, nginx будет переводить запросы на реальный сайт (отправлять инструкции браузеру перейти на него), а не тот, что мы используем за http-прокси
4. Редиректы при проксировании
Если при проксировании хост возвращает инструкцию браузеру для выполнения редиректа, обозреватель может сменить адрес сайта. Это особенно не удобно, когда проксирование мы выполняем на другой сайт. Чтобы отловить редиректы и заменить их своими значениями, мы должны воспользоваться опцией proxy_redirect. Рассмотрим ее применение для предыдущего примера, когда мы проксировали запрос на сайт www.dmosk.ru:
server {
listen 80;
server_name dmosk.local www.dmosk.local;
location / {
proxy_pass https://www.dmosk.ru;
proxy_set_header Host www.dmosk.ru;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect https://www.dmosk.ru/url1 http://dmosk.local/url2;
proxy_redirect https://www.dmosk.ru/ http://dmosk.local/;
}
}
* в конкретном случае мы проксируем запросы http://dmosk.local на сайт www.dmosk.ru, но если он вернет инструкцию для редиректа https://www.dmosk.ru/url1, в браузере он должен быть заменен на http://dmosk.local/url2. А также любое перенаправление для https://www.dmosk.ru/ будет заменено на http://dmosk.local/.
Перенаправление остальных элементов
Чтобы сделать 301 редирект остальных элементов (не записей), картинок, ссылок, таблиц и т.д. нужно установить ненадолго плагин Velvet Blues Update URLs. Чтобы установить плагин:
- Перейдите в раздел плагины > добавить новый
- В поле поиск введите название
- На карточке нажмите кнопку активировать
Изображение плагина Velvet Blues Update URLs
Устанавливаем и вводим настройки, заходим в раздел инструменты > Update URLs. В поле Old URL вводим адрес сайта без протокола, а New URL с ним.
Перезапись ссылок
Далее переходим ко второму шагу и отмечаем все галочки кроме последней. Этим действием перезапишем все имеющиеся на сайте объекты, в которых могут содержаться URL без протокола, и нажимаем Update.
Выставляем элементы ссылок для изменения
Инструмент начнет работу, и после покажет сводную таблицу сколько элементов изменено. После проделанной операции, можно деактивировать и удалить его из WordPress.
Таблица количества измененных URL
Настраиваем редиректы для SEO
Как мы уже упоминали, это самый популярный способ использования .htaccess. Перед тем, как настраивать тот или иной вид переадресации, убедитесь, что это действительно необходимо. Например, редирект на страницы со слешем в некоторых CMS настроен по умолчанию. О настройках редиректа для SEO мы писали в блоге.
При настройке 301 редиректов помните о двух правилах:
- Избегайте нескольких последовательных перенаправлений — они увеличивают нагрузку на сервер и снижают скорость работы сайта.
- Располагайте редиректы от частных к глобальным. Например, сначала переадресация с одной страницы на другую, затем общий редирект на страницы со слешем. Это правило работает не в 100% случаев, поэтому с размещением директив нужно экспериментировать.
1. Настраиваем постраничные 301 редиректы
Это потребуется в следующих случаях:
- изменилась структура сайта и у страницы поменялся уровень вложенности;
- страница перестала существовать, но нужно сохранить ее входящий трафик (например, в случае отсутствия товара обычно делают переадресацию на товарную категорию);
- поменялся URL, что крайне нежелательно, но тоже встречается.
Просто удалить страницу — плохая идея, лучше не отдавать роботу ошибку 404, а перенаправить его на другой URL. В этом случае есть шанс не потерять позиции сайта в выдаче и целевой трафик. Настроить 301 редирект с одной страницы на другую можно при помощи директивы простого перенаправления:
- — адрес страницы от корня, без протокола и домена. Например, .
- — полный адрес страницы перенаправления, включая протокол и домен. Например, .
2. Избавляемся от дублей
Каждая страница сайта должна быть доступна только по одному адресу. Для этого должны быть настроены:
- редирект на страницы со слешем в конце URL или наоборот;
- главное зеркало — основной адрес сайта в поиске.
Сделать это можно при помощи модуля . В его составе используются специальные команды — директивы сложного перенаправления. Первой командой всегда идет включение преобразования URL:
Переадресация на слеш или наоборот
Настроить ли переадресацию на страницы со слешем или без, в каждом случае нужно решать индивидуально. Если у сайта уже накоплена история в поиске, анализируйте, каких страниц в индексе больше. Для новых сайтов обычно настраивают редирект на слеш. Проверить, не настроена ли переадресация по умолчанию, просто: удалите/добавьте слеш в конце URL. Если страница перезагрузится с новым адресом — мы имеем дубли, требуется настройка. Если URL подменяется — все в порядке. Проверять лучше несколько уровней вложенности.
Код 301 редиректа на страницы без слеша:
3. Настраиваем главное зеркало
Для начала нужно определиться, какой адрес будет являться основным для поиска. SSL-сертификат давно уже мастхэв. Просто установите его и добавьте правило в .htaccess. Не забудьте также прописать его в robots.txt.
Редирект на HTTPS
Определять, с «www» или без будет главное зеркало, можно несколькими способами:
- добавить сайт в Яндекс.Вебмастер в двух вариантах, в консоли отобразится информация, какой URL поисковик считает главным зеркалом;
- проанализировать выдачу и посмотреть, каких страниц сайта больше в индексе;
- для нового ресурса не имеет значения, с «www» или без будет адрес, выбор за вами.
После того как выбор сделан, воспользуйтесь одним из двух вариантов кода.
Редирект с без www на www
4. Перенаправляем с одного домена на другой
Самая очевидная причина настройки этого редиректа — переадресовать роботов и пользователей на другой адрес при переезде сайта на новый домен. Также им пользуются оптимизаторы для манипуляций ссылочной массой, но дроп-домены и PBN — серые технологии продвижения, которые в рамках этого материала мы затрагивать не будем.
Воспользуйтесь одним из вариантов кода:
или
Не забудьте поменять в коде «mysite1» и «mysite2» на старый и новый домен соответственно.
Правила Redirect
Эти директивы вы можете прописывать как в конфиге Apache для нужного virtualhost, так в файле .htaccess.
Redirect или RedirectPermanent
Главный недостаток данных правил заключается в том, что для каждого адреса необходимо прописывать новое правило. Если необходимо сделать несколько редиректов, то каждый новый редирект пишется с новой строки.
Если нужно сделать несколько редиректов, то каждый новый редирект нужно написать с новой строки.
или
Для перенаправления всех запросов на другой сайт вы можете использовать следующую конструкцию:
или
RedirectMatch
Этот редирект отличается тем, что в нем можно использовать регулярное выражение. Например, при переносе сайта с Windows на Linux, необходимо сменить все ссылки с *.php на *.aspx:
RedirectMatch /(.*)\.aspx$ /$1.php
RewriteRule
Для работы данного модуля убедитесь в том, что включена опция FollowSymLinks, эту функцию нужно прописать в конфигурационном файле Apache или в файле .htaccess как указано ниже.
Рассмотрим самые распространённые варианты её использования.
Редирект с одного сайта на другой
Или более понятный синтаксис
Вы можете использовать любой.
Перенаправление домена с http на https
Nginx
Модуль ngx_http_rewrite_module, необходимый для настройки перенаправлений, он устанавливается автоматически вместе с Nginx.
Редирект 301 с www.domain.com на domain.com
Для Nginx вам нужно создать две секции server в конфигурационный файл, одна для домена с www, вторая для домена без www:
Секция server для редиректа:
Секция server, где находятся основные настройки домена:
server { listen 80; server_name domain.com; ..... }
После внесения изменений в конфигурационный файл Nginx, для вступления в силу этих изменений, нужно перезапустить веб сервер.
service nginx restart
Редирект 301 с domain.com на www.domain.com
Для Nginx вам нужно создать две секции server в конфигурационный файл, одна для домена без www, вторая для домена с www.
Секция server для редиректа:
Секция server, где находятся основные настройки домена.
server { listen 80; server_name www.domain.com; ..... }
После внесения изменений в конфигурационный файл Nginx, для вступления в силу этих изменений, нужно перезапустить веб сервер.
service nginx restart
Включение 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, Безопасность
Видеоматериал
Переадресация 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 через htaccess
Наиболее популярный сервис Apache предлагает эффективные решения для пользователей, избавляющие от необходимости обращаться в глобальный конфиг httpd. conf). Для этого применяется файл дополнительной конфигурации .htaccess, размещенный в каталоге ресурса. Именно этот файл позволяет выполнить удобную настройку редиректа с http на https.
Для этого можно использовать разные текстовые редакторы типа vim, nano, mcedit др. В файле нужно прописать:
RewriteEngine On
RewriteCond %{HTTPS} !=on
Если редирект не заработал, можно использовать еще один способ настройки через htaccess:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
В этом случае работает правило Redirect 301 (при запросе доступа к странице на версии http сервер будет выдавать ответ о ее переезде на адрес с https). После изменения файл нужно сохранить.
Как отключить переадресацию?
Отключить переадресацию можно почти так же, как и включить. Необходимо:
Шаг 1 — отключить принудительное перенаправление.Если перенаправление было включено в разделе «Сайты» Панели управления — соответствующую опцию необходимо отключить, если в .htaccess были добавлены соответствующие правила — нужно удалить их из файла.
Шаг 2 — отключить поддержку HTTPS в панели администратора сайта.Для соответствующих опций, которые менялись на этапе включения переадресации, необходимо вернуть прежние значения.
Шаг 3 — очистить кэш вашего сайта.Информацию о том, как это сделать, можно прочитать в или уточнить у разработчика сайта.
Параметры по умолчанию требуют 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 |
Что-то пошло не так и на сайт нельзя зайти
В данном случае следует вернуть все обратно и поискать причину сбоя в установленных плагинах или в одном из файлов темы — functions.php. Отправляемся в wp-config.php и вставляем значения:
define('WP_HOME','http://clearfy.pro'); define('WP_SITEURL','http://clearfy.pro');
clearfy.pro в данном случае пример. Вместо этого URL должен быть адрес вашего сайта с протоколом http.
Займемся поиском причины сбоя. Деактивируйте плагины один за одним, удалите данные, веденные ранее в wp-config.php. Если сайт не починился, то поменяйте тему на одну из стандартных. Проверьте снова. Если ситуация не прояснилась, то проверьте файл .htaccess. Возможно источник проблем в нем.
Редирект с 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.