Что такое 301 редирект и как его настроить
Содержание:
- Как работает mod_rewrite. Флаг [L]
- Создание постоянной переадресации 301 через настройки и плагины CMS
- Подготовка
- Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
- Этап 1. Удаление параметра «Требовать SSL» для веб-сайта по умолчанию с помощью диспетчера служб IISStep 1: Use IIS Manager to remove the Require SSL setting from the default website
- Как это работает?
- Редирект с http на https WordPress
- Как сделать редирект с https на http?
- Что такое переадресация 301
- Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы
- По умолчанию требуются параметры SSL и HTTP-перенаправления на веб-сайте по умолчанию на сервере ExchangeDefault Require SSL and HTTP Redirect settings in the default website on an Exchange server
- Переходим на HTTPS
- Альтернативные методы переадресации
- Другие способы создания переадресации 301
- 13 популярных ошибок при переходе сайта на https
- Шаг 2: Покупка SSL сертификата
- Выполнять редирект http на https или нет
- Выполнение HTTPS-редиректа на уровне приложений
- Как правильно создать .htaccess
- Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы
- Перенаправить HTTP на HTTPS для каждого сайта
- Конфигурация Apache
- Заключение
Как работает mod_rewrite. Флаг [L]
изменение запроса не заканчивается на последнем RewriteRule— Постойте, но ведь есть флаг , который останавливает обработку запроса mod_rewrite’ом!текущую итерацию
- Когда используется внешний редирект — или . В случае внешнего редиректа дальнейшая обработка запроса нежелательна (см. ниже про флаг ), и ее лучше остановить.
- Когда в .htaccess есть зацикливание, от которого не избавиться, и обработку запроса mod_rewrite’ом нужно принудительно прекратить. В этом случае используется специальная конструкция — см. в конце статьи советы на эту тему.
В результате выполнения всех RewriteRule запрос меняется таким образом, что конечный результат равен исходномуApache видит это и не запускает повторную обработку запросаБудет возвращен файл a.html
Создание постоянной переадресации 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 довольно просто в базовом редакторе.
Подготовка
Сначала нам необходимо получить сам SSL сертификат, можно его купить, можно использовать и бесплатный. В этой статье мы будем рассматривать самый простой случай, когда сертификат установит сам хостер. Вариант еще проще – получить в 2 клика бесплатный сертификат у Beget.
- Если сайт открылся – все хорошо, переходим к следующему пункту.
- Если не отрылся – подождите 10-15 минут и проверьте снова. Если нет – нужно разбираться, правильно ли установлен сертификат.
- Если произошел редирект на http версию – нужно искать в плагинах, functions.php или в htaccess правила для редиректа и удалить их
Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1/
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)$ http://%1/$1/
Этап 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:
Как это работает?
Попробуем разобраться, как работает эта конфигурация 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 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.
Как сделать редирект с https на http?
Решение 1
Делаем редирект на http с помощью .htaccess
Замечание Перечисленные ниже варианты предназначены для серверов Linux.
Пояснения для всех последующих вариантов Редактируем или создаём, если его нет, файл .htaccess в корневой папке вашего сайта, и добавляем сразу после один из нижеперечисленных вариантов, при этом не забыв изменить site.ru на URL вашего сайта.
Вариант 1
Вариант 2
Вариант 3
Вариант 4
Вариант 5
Вариант 6
Вариант 7
Вариант 8
Вариант 9
Вариант 10
Попробуем ещё вариант — вместо %{HTTPS} указать %{ENV:HTTPS}
Вариант 11
Вариант 12
Замечание Если не работает, то можно попробовать поместить, указанные выше строки, в выражение IfModule.
ВАЖНОПри открытии сайта, Сначала браузер проводит проверку наличия SSL-сертификата и уже затем срабатывает редирект. Другими словами, если на сайте нет SSL-сертификата, то посетители сначала увидят предупреждение браузера о незащищённом контенте, и уже затем сработает редирект на http …
ЗамечаниеОбычно, при открытии сайта, Сначала браузер, как правило, открывает версию https сайта. Но это не точно. На самом деле, это зависит от настроек сервера и сайта. Если вебсервер отдаёт заголовок «Strict-Transport-Security» ( смотрим в настройках add_header Strict-Transport-Security ), тогда браузер будет открывать сайт по HTTPS протоколу. Дополнительно, этот заголовок появляется, если в настройках web-домена установлено: «Повышенная безопасность SSL»
Если Решение 1 не работает?
В частности этим грешат серверы и VDS с панелью ISP Manager 5 ( на других панелях управления, например cPanel, с Lunix на этом же сайте переадресация работает! )
Решение 2
Открываем и внимательно смотрим ваш сайт (для примера site.ru )именно по протоколу httpS если он не ваш и отличаются и по внешнему виду и по контенту, то
нужно выяснить его ( URL ). Обычно это один из https сайтов, расположенный на вашем IP адресе. Найти список сайтов на вашем IP можно стандартным сервисом «Сайты на одном IP»
Итак, — хорошо — вы узнали, какой это сайт ( назовём его, для удобства https-sait.ru )
И теперь все дальнейшие правки, как ни странно, будем вести не на проблемном сайте, а на найденном (https-sait.ru)!
Идея: поставить передресацию с https на http на найденном https сайте https-sait.ru
13 Решение: создаем в корне этого сайта в файле htaccess правила типа условное выражение такого вида:
Пробуем, проверяем.
Подводим итог.
Другими словами, для того, чтобы сделать редирект с https на http вашего сайта sait.ru, вам потребуется найти и открыть https-sait.ru, отредактировать там .htaccess файл, прописав правила аналогичные пункту 13 для каждого вашего сайта: sait 1, 2, 3.ru
Вот такие странности панели ISP Manager ….
Решение 3
Замечание Предлагаемое решение работает на серверах с NginX.
Если у вас сервер с nginx, тогда делаем переадресацию в его настройках
Вариант 3.1
Указав, вместо ip — ваш реальный IP, вместо site.ru — URL вашего сайта и вместо # пути к сертификату — реальный путь. Сохраняем и перегружаем сервер
Модифицированный вариант:
Вариант 3.2
находим и удаляем там же строку
Если что то не работает, перезагружаем nginx и смотрим ошибки, которые находятся в
Замечание Если нужно, чтобы сайт открывался как по http, так и по протоколу https, то вышеуказанные варианты приведут к зацикливанию ….
Нужно же, чтобы сайт открывался как по http, так и по https. Если прописывать редирект в nginx на http
Вариант 3.2
Некоторые, устав бороться с NginX, сносят его и ставят классический редирект
Решение 4
Что такое переадресация 301
Permanent Redirect 301 применяется с целью организации постоянной переадресации с неактуального доменного адреса или url отдельной страницы на рабочую версию. Редирект может понадобиться в связи с глобальным переносом сайта на другой домен, техническими изменениями в написании адреса, удалением страниц, необходимостью внутренней и внешней перелинковки. Один из вариантов использования перманентной переадресации – редирект с нескольких доменных имен, созданных в разных зонах, на один актуальный адрес. Грамотное использование редиректа позволяет перемещать контент без потерь в поисковой индексации, сохранить и даже увеличить прежний вес и позицию в выдаче.
Настроить код состояния HTTP 301 можно разными способами:
-
с помощью HTML и PHP;
-
через панель управления или плагины соответствующей CMS;
-
при помощи специальных скриптов (программ);
-
на уровне хостинг-провайдера;
-
внесением соответствующих записей в файлы .htaccess для сервера Apache или web.config для IIS.
Последний способ является наиболее простым и надежным. О нем чуть позже поговорим подробнее.
Один (а не два последовательных!) 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
По умолчанию требуются параметры 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 |
Переходим на HTTPS
Перенос сайта на другой протокол выполняется в несколько этапов. Сперва нужно приобрести SSL-сертификат у хостинга (достаточно открыть нужный раздел в личном кабинете и заказать сертификат). Также нужно изменить все внутренние ссылки на относительные и установить автоматическую переадресацию сайта на защищенный протокол. Подробнее о том, как это быстро и правильно организовать, поговорим в нижеуказанной инструкции.
Шаг 1: Подготовка сайта
Перед выполнением редиректа с HTTP на HTTPS рекомендуется исправить некоторые моменты в строчках кода, чтобы избежать возможных ошибок. Первый — внутренние ссылки.
Чтобы избежать предупреждения, указанного выше, необходимо изменить все внутренние ссылки с абсолютных на относительные. Например, ссылку http://ssl.ru/testpage/ потребуется заменить на /testpage/. Также стоит внимательно проверить все ссылки на скрипты в коде страниц.
Второй момент — проверка медиаконтента, в который входят изображения, видеоклипы, презентации и прочее. Необходимо посмотреть, какой на страницах сайта используется контент и по какому протоколу он запрашивается. Если используется HTTP, то рекомендуется загрузить все файлы на сервер и установить относительные ссылки. В противном случае указывайте только проверенные сайты: YouTube, Facebook, VK и так далее.
Теперь можно переходить к подключению SSL.
Шаг 2: Установка SSL-сертификата
Устанавливаем SSL:
Проверить подлинность сертификата можно на различных сервисах, например, Namecheap. Все просто: вводим домен с портом 443 и жмем «Check». При успешной проверке будет отображена надпись «It’s all good. We have not detected any issues».
После установки также рекомендуется убедиться, что сайт работает на обоих протоколах. Затем нужно сделать переадресацию с HTTP на HTTPS. Зачем это нужно, расскажем уже в следующем разделе.
Шаг 3: Настройка редиректа на HTTPS
Переадресация страниц нужна для того, чтобы пользователи, которые обратились к сайту по старому протоколу, автоматически подключились к новому адресу с HTTPS. Сделать это довольно просто – необходимо в директории сайта открыть файл .htaccess и добавить в него определенный код. Существует несколько вариантов кода.
Первый вариант:
RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{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}
Также мы можем сделать редирект с HTTP через административную панель CMS системы. В OpenCart для этого нужно открыть файл config.php и прописать в него следующее:
define('HTTPS_SERVER', 'https://yourdomain.com/');
В WordPress изменить wp-config.php:
define('FORCE_SSL_ADMIN', true);
Для получения подробной информации о редиректах на других CMS обратитесь к их документации.
Шаг 4: Настройка для поисковых систем
Если ваш сайт индексируется Google, Яндекс или другими поисковиками, то после перехода на HTTPS необходимо им об этом сообщить. В частности, нужно:
- Изменить все теги «rel=canonical» в HTML-коде. Они должны указывать на ссылки с защищенным протоколом.
- В файлы robots.txt и sitemap.xml необходимо добавить страницы с HTTPS.
- Проверить корректность указанных данных в Яндекс.Метрика и Google Search Console.
- Проверить отображение и доступность вашего сайта через поисковик.
Готово! На этом переход с HTTP на HTTPS завершен. Надеюсь, что у вас не возникло сложностей
Спасибо за внимание!
Альтернативные методы переадресации
- Редирект 302. Применяется в случае временной переадресации с одного url на другой. При его использовании поисковая система индексирует все доступные версии сайта или страницы. Объединения ссылочного веса и внутренних метрик на приоритетном ресурсе не происходит.
- 307 Temporary Redirect рекомендуется применять в исключительных случаях. Например, при техническом обслуживании сайта, когда он недоступен некоторое время.
- Обновления Meta Refresh выполняют переадресацию не на уровне сервера, а непосредственно на сайте. Пользователь сталкивается с временной задержкой (обычно около пяти секунд), после чего для перехода на нужную страницу должен принудительно запустить определенную команду. Этот метод часто приводит к падению посетительского интереса и проседанию поисковых индексов.
- Редирект rel=«canonical». Позволяет сохранить доступ посетителям ресурса к контенту дублирующихся страниц. При этом для поисковиков наличие команды canonical на одной из страниц говорит о том, что только она подлежит индексации в поиске.
В большинстве случаев постоянная переадресация является более правильным решением, чем временная. На практике это объясняется просто. Предположим, сайт сменил доменную зону, а затем еще и обзавелся защищенным протоколом https. При настройке временной переадресации в индексе Яндекса и Google по одним и тем же запросам появились три версии сайта с пропорциональным проседанием позиций в выдаче. После настройки редиректа 301 на приоритетный url произошло склеивание дублей, робот вернул сайт в топ выдачи.
Не рекомендуется использовать постоянный редирект при временном переносе сайта или наличии серьезных проблем со старым доменным именем. Если адрес забанен или попал под поисковую фильтрацию, смена дислокации с применением переадресации не поможет избавиться от этих ограничений.
Другие способы создания переадресации 301
Через PHP
Данный вариант подойдет тем, кто хорошо разбирается в web-программировании и PHP. Необходимо открыть файл index.php в корне CMS-движка и прописать там:
if($_SERVER == "/index.php") { header("Location: /",TRUE,301); exit(); }
(в первой строке укажите старый url, а во второй — новый)
Второй способ — перенаправление при помощи отправки заголовков (скрипта):
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.newdomain.ru/newdir/newpage.htm"); exit(); ?>
ASP-редирект
<%@ Language=VBScript %> <% Response.Status="301 Moved Permanently" Response.AddHeader "Location", "http://www.new-url.com" response.end %>
ASP.NET редирект
Найдите в корне своего сайта файл web.config и вставьте в секцию синтаксис:
<script runat="server"> private void Page_Load(object sender, System.EventArgs e) { Response.Status = "301 Moved Permanently"; Response.AddHeader("Location","http://www.new-url.com"); } </script>
ColdFusion редирект
<.cfheader statuscode="301″ statustext="Moved permanently"> <.cfheader name="Location" value="http://www.new-url.com">
JSP (Java) редирект
Данный способ подойдет для небольшой корректировки простых сайтов. Код можно прописать лишь в одном файле, а сам файл добавить на все нужные страницы, указав:
<script type="text/javascript" src="redirect.js"></script> <script type="text/javascript"> location="https://yandex.ru"; </script>
HTML-редирект
Этот способ подойдет для небольших статических сайтов, когда требуется настроить переадресацию для одной страницы. Для этого необходимо добавить специальный мета-тег внутри кода HTML. Пример записи редиректа на другой ресурс после 5-секундной задержки:
<meta http-equiv="refresh" content="5;https://livepage.pro">
Если поставить значение 0 вместо 5, то переадресация на https://livepage.pro произойдет моментально.
Однако для больших сайтов HTML-перенаправление делать сложно и затратно по времени, поэтому лучше отдать предпочтение другому варианту.
13 популярных ошибок при переходе сайта на https
Пишу самые популярные моменты, которые знаю из своего опыта или опыта коллег:
- Сделать 302 редирект вместо 301 для склейки версий http с https;
- Сделать редирект всех внутренних страниц на главную;
- Допустить цикличные редиректы;
- Забыл, что твой сайт без www, но склеить с https://www.site.ru;
- Забыл прописать новый путь для sitemap.xml;
- Пропустил этап с заменой абсолютных ссылок;
- Не изменил урлы в скриптах и медиа-контенте;
- В карте сайта указаны урлы на версию с http;
- Описался при наборе домена при получении сертификата;
- Может сломаться 1С, если забыли обновить данные;
- Сайт интегрирован с различными API и вы забыли изменить адреса;
- Косяки с rel=”canonical” на старые страницы;
- Не очистил кэш и начал сам себе выдумывать проблемы.
А с какими косяками вы сталкивались?
Шаг 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
У вас есть ключи и все что вам нужно сделать — это добавить их в панели своего хостинга.
Просто вставить в поля свои ключи от центра сертификации
Выполнять редирект http на https или нет
Протокол https – четкая эффективность получения данных безопасными путями. Такой подход возник после использования Google определения существования редиректа с http на https. Это влияло на релевантность интернет-страницы.
На данный момент это всего лишь 1% вероятности поднятия рейтинга
Google с большим вниманием станет относиться к проблемам безопасности, и это очень важно. Для пользователей наличие «замочка» в адресной строке вызовет доверие к выбранной странице
Значок «замочка» указывает на наличие протокола https. При его отсутствии наблюдается снижение уровня доверия, и возникает высокая вероятность того, что читатель уйдет на страницу конкурента.
Применение протокола https предусматривает 3-уровневую защиту данных:
- Кодирование. Раскодирование возможно при наличии ключа, что исключает доступ посторонними лицами.
- Редирект с http на https – обеспечение целостного хранения информации и отсутствие искажений.
- Авторизация не позволяет мошенникам использовать ваши вводимые данные в своих целях.
Преимущества защищенного протокола:
- повышении позиции в поисковике, что гарантирует положительный эффект релевантности;
- контроль и защита данных пользователя.
Выполнение HTTPS-редиректа на уровне приложений
Когда у вас нет доступа к конфигурации сервера, или логика редиректа является более сложной, необходимо обрабатывать редирект с HTTP на HTTPS на уровне приложений.
или взаимодействовать с сервером приложений
То, как выполняется редирект на уровне приложений, зависит от используемого языка программирования и стека. Вот несколько примеров.
Ruby on Rails
Можно настроить редирект на уровне маршрутизатора, использовать промежуточное программное обеспечение Rack или метод redirect_to внутри контроллера:
constraints(host: /www.example.com/) do get '*', to: redirect('https://example.com') end
PHP
Используйте функцию header, чтобы отправить HTTP-заголовок перенаправления:
<?php header('Location: https://example.com/'); exit; ?>
В некоторых случаях это единственно возможный подход. Например, если нужно перенаправить клиентов с WWW на не-WWW версию домена, с HTTPS на Heroku или Azure (или наоборот), то придется указать оба домена в одном приложении, установить сертификат и через условия обрабатывать редирект на уровне приложений.
Как правильно создать .htaccess
Для этого вам понадобится самый обычный текстовый редактор, к примеру, Блокнот, который есть на любом ПК:
- Откройте Блокнот, ничего в нем не пишите.
- Выберите пункт «Файл» и нажмите «Сохранить как».
- Появится окно, где напротив пункта «Тип файла» выберите All types» или «Все файлы».
- В строке «Имя файла» введите .htaccess и кликните на «Сохранить».
Далее перепроверьте, создан ли документ правильно. Обязательно посмотрите, не сохранили ли вы его как .htaccess.txt. Затем загрузите файл в корневую папку сервера, и если не отобразится ошибка 500, значит, вы все сделали правильно.
Отныне вы можете редактировать файл, что позволит вам управлять веб-сайтом более гибко.
Один (а не два последовательных!) 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
Перенаправить HTTP на HTTPS для каждого сайта
Обычно, когда сертификат SSL установлен в домене, у вас будет два серверных блока для этого домена. Первый для HTTP-версии сайта на порту 80, а второй для версии HTTPS на порту 443.
Чтобы перенаправить отдельный веб-сайт на HTTPS, откройте файл конфигурации домена и внесите следующие изменения:
Давайте разберем код построчно:
- — серверный блок будет прослушивать входящие соединения на порту 80 для указанного домена.
- — указывает доменные имена серверного блока. Убедитесь, что вы заменили его на свое доменное имя.
- — Перенаправить трафик на HTTPS-версию сайта. Переменная — это полный исходный URI запроса, включая аргументы.
Обычно вы также можете перенаправить HTTPS-версию сайта с www на не-www или наоборот. Рекомендуемый способ выполнить перенаправление — создать отдельный серверный блок для версий с www и без www.
Например, чтобы перенаправить HTTPS-запросы www на не-www, вы должны использовать следующую конфигурацию:
Каждый раз, когда вы вносите изменения в файлы конфигурации, вам необходимо перезапустить или перезагрузить службу Nginx, чтобы изменения вступили в силу:
Конфигурация 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}
Заключение
Учитывая, что HTTPS становится стандартом для сайтов, важно надлежащим образом настроить соответствующие редиректы для предотвращения появления дублированного контента и перевода сайта на использование HTTPS-версии. Для создания HTTPS-редиректов требуются дополнительные действия, чтобы перенаправляемый сервер был в состоянии обработать входящие HTTPS-запросы и отправить правильный ответ о редиректе
Для создания HTTPS-редиректов требуются дополнительные действия, чтобы перенаправляемый сервер был в состоянии обработать входящие HTTPS-запросы и отправить правильный ответ о редиректе.
Существует много способов обработки URL-редиректов, и, надеюсь, эта статья помогла вам найти подходящий вариант, как сделать редирект с HTTPS на HTTP.
Данная публикация является переводом статьи «Redirects with HTTPS» , подготовленная редакцией проекта.