Содержание
- Что такое 301 редирект
- 301 редирект для SEO
- Пошаговая настройка
- Настройка через файл .htaccess
- Склейка зеркал сайта
- Постраничный редирект
- Изменение домена
- Редирект на страницу с другим url (без параметров)
- Редирект для url (с параметрами)
- Редирект с index.php на главную
- Редирект со страниц со слешем на страницы без слеша (для всего сайта)
- Редирект со страниц без слеша на слеш (для всего сайта)
- Постоянный редирект для Nginx
- Редирект для PHP
- Редирект 301 в разных панелях управления хостингом
- Редирект для популярных CMS
- Автоматическое создание кода
Вопросы интернет-безопасности с каждым днем становятся все более актуальными. Именно с этим связана тенденция перевода крупных порталов, сайтов, блогов, интернет-магазинов и других ресурсов с традиционного протокола HTTP на более безопасный HTTPS.
После того, как вы подготовили сайт к переносу на HTTPS, устранили возможные технические ошибки и купили SSL-сертификат, необходимо перенаправить всех посетителей, которые обратились по незащищенному протоколу HTTP, на безопасную версию сайта по протоколу HTTPS. Сделать это можно с помощью 301-редиректа.
Что такое 301 редирект
Редиректом называется процесс, при котором посетитель сайта автоматически перенаправляется с устаревшей страницы на актуальную (адрес может содержать http, https, www). Есть два варианта выполнения редиректа - на сервере и в браузере. Серверный редирект предпочтительнее, поскольку он не тормозит загрузку страниц.
301 редирект для SEO
Как уже было сказано ранее, протокол HTTPS - полезное и эффективное решение для безопасной передачи данных. Но массовое внимание он получил после того, как Google начал использовать критерий наличия редиректа с http на https для ранжирования страниц в поиске.
Корректно настроенный 301 редирект необходим для эффективного SEO-продвижения ресурса. Грамотно перемещенная страница не теряет позиций в выдаче и сохраняет свой прежний вес.
Пошаговая настройка
Настроить редирект можно двумя способами - с помощью панели управления или файла .htaccess.
Настройка через файл .htaccess
Чтобы страницы с http автоматически перенаправляли пользователя на https, необходимо провести работу в файле .htaccess, который расположен в корневой папке сайта.
Что делать, если. htaccess отсутствует? Его нужно сделать и добавить код (без указания доменного имени):
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Затем вбейте в адресную строку вашдомен.ru и убедитесь, что вас автоматически перенаправляет на https:/вашдомен.ru. Цель достигнута!
Обратите внимание на то, что файл .htaccess обеспечивает редирект только при наличии точки. Без нее редирект просто не будет работать.
Иногда после перехода на https происходит сбой шрифтов. Ничего страшного. У каждой страницы сайта есть код, содержащий надпись с установкой шрифта. Как правило, эта надпись содержит http. Найдите надпись <script src="http://ajax.googleapis.com/ajax/libs/.../script> и замените http на https. Получится <script src="https://ajax.googleapis.com/ajax/libs/.../script>. Это не единственный способ настройки редиректа, существуют и другие варианты.
Склейка зеркал сайта
Поисковые системы распознают сайты http://name.site и http://www.name.site как разные сайты, но на самом деле - это разные адреса одного сайта.
Поисковая система проиндексирует сайт по одному адресу, а по второму определит его как дубль. Это негативно влияет на продвижение, поэтому здесь нужна «склейка».
Если поисковая система в первую очередь индексирует версию с www, то файл .htaccess необходимо дополнить редиректом без www:
RewriteCond %{HTTP_HOST} ^www.name.site [NC]
RewriteRule ^(.) http://name.site/1 [R=301,L]
В обратной ситуации в файле прописывается следующее:
RewriteCond %{HTTP_HOST} ^v name.site [NC]
RewriteRule ^(.) http://www.name.site/1 [R=301,L]
Если вы хотите сделать редирект 301 для всего сайта, то в файл .htaccess надо добавить:
RewriteCond %{SERVER_PORT} !^443
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Не сработало? Попробуйте по-другому:
RewriteCond %{HTTPS} =on
RewriteRule (.) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Осталось циклическое перенаправление? Тогда сделайте так:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Не сработало? Попробуйте опять:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443
RewriteCond %{REQUEST_URI} =/page.php
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
В итоге вы получите перенаправление на https без потери SEO-настроек.
Постраничный редирект
Иногда требуется перевод на https всех страниц, кроме одной. В таких случаях нужен постраничный редирект:
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/page.php
RewriteRule (.) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Для редиректа на https одной страницы воспользуйтесь конструкцией:
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/page.php
RewriteRule (.) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Для редиректа целого сайта с https на http пропишите в файле:
RewriteCond %{SERVER_PORT} ^443 [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.) https://name.site/1 [R=301,L]
Изменение домена
Чтобы перейти на другой домен без потери позиций в поиске, пропишите в файле .htaccess:
RewriteCond %{HTTP_HOST} ^www.old_name.ru [NC]
RewriteRule ^(.) http://new_name.ru/1 [L,R=301]
RewriteCond %{HTTP_HOST} ^old_name.ru [NC]
RewriteRule ^(.) http://new_name.ru/1 [L,R=301]
Редирект на страницу с другим url (без параметров)
В некоторых случаях необходимо поменять url страницы. Для переноса данных в .htaccess прописывают:
RewriteRule ^(.)old_page.html http://vash-sait.ru/new_page.html [R=301,L]
Редирект для url (с параметрами)
Если в адресе есть параметр (например, http://name.site/articles.php?section=1, где параметром является «section=1»), то необходимо прописать:
RewriteCond %{QUERY_STRING} section=1
RewriteRule ^index.php http://name.site/articles.php? [R=301,L]
Редирект с index.php на главную
В некоторых случаях главная страница сайта недоступна сразу по нескольким адресам. Здесь следует применить такую конструкцию:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
RewriteRule ^index.php http://name.site/ [R=301,L]
Редирект со страниц со слешем на страницы без слеша (для всего сайта)
Чтобы избежать дублей в .htaccess, сделайте следующее:
RewriteCond %{REQUEST_URI} !?
RewriteCond %{REQUEST_URI} !&
RewriteCond %{REQUEST_URI} !=
RewriteCond %{REQUEST_URI} !.
RewriteCond %{REQUEST_URI} ![^/]
RewriteRule ^(.)/ /1 [R=301,L]
Существует и более «компактный» вариант:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/
RewriteRule ^(.+)/ /1 [R=301,L]
Редирект со страниц без слеша на слеш (для всего сайта)
Чтобы использовать адреса со слешем, используется обратный вариант:
RewriteCond %{REQUEST_URI} !?
RewriteCond %{REQUEST_URI} !&
RewriteCond %{REQUEST_URI} !=
RewriteCond %{REQUEST_URI} !.
RewriteCond %{REQUEST_URI} !/
RewriteRule ^(.[^/]) /1/ [R=301,L]
Постоянный редирект для Nginx
Этот сервер часто используется в VPS-хостинге в «тандеме» с сервером Apache. Для настройки редиректа в нем добавляются строки в файле nginx.config.
C www на без www
server {#...
if(host~ www.(.)) {
set host_without_www 1;
rewrite ^ (.) http: //host_without_www1 permanent;
}#...
}
Без www на с www
server {#...
if(host~ ^ [ ^ .] + .[ ^ .] + ) {
rewrite ^ (.) scheme: //www.host1 permanent;
}#...
}
Сохранив изменения, перезапустите сервер с помощью команды «service nginx restart».
Редирект для PHP
Такой вариант уровня сервера предназначен для создания редиректа для большого количества страниц, не каждая из которых имеется на платформе.
Алгоритм действий:
- Загрузка на жесткий диск файла index.php.
- Генерирование кода.
- Занесение кода в текстовый файл с последующим сохранением и загрузкой на сервер.
- Указание основного URL в настройках сайта.
Редирект 301 в разных панелях управления хостингом
Cpanel
Чтобы сделать 301 редирект Cpanel, выполните следующее:
- Зайдите в блок «Домены» и выберите «Перенаправления».
- Найдите строку «Тип», выберите «Постоянный 301».
- Когда появится выпадающий список, в строке https://www выберите домен сайта (к примеру, example.ru).
- Напишите в строке «Перенаправляет на» адрес http://example.ru.
- После этого в блоке «Перенаправление www» найдите пункт «Перенаправлять только с www» и поставьте галочку.
- Кликните «Добавить», чтобы изменения сохранились.
ISPmanager
Для редиректа в этой панели можно работать с файлами nginx.config или .htaccess, а можно воспользоваться встроенным механизмом переадресации. Чтобы настроить переход с http на https зайдите в раздел «WWW-домены» и снимите галочку в нужном пункте.
Beget
Средства этой панели управления не предназначены для редиректа 301. Установить редирект можно, воспользовавшись файлом .htaccess.
Редирект для популярных CMS
WordPress
Чтобы создать постоянный редирект для этой CMS, разработано множество плагинов, например, Quick Page, Safe Redirect Manager, Redirection и др.
Рассмотрим редирект через Redirection. Выполнить перенаправление можно через консоль сайта, зайдя во вкладку «Инструменты» или воспользовавшись разделом плагинов. Все, что нужно, - это заполнить два поля - Source URL и Target URL, указав в первой графе старый адрес, а во второй новый.
Битрикс
Для перенаправления на новую страницу в системе Bitrix достаточно отредактировать файл .htaccess, внеся в него такой редирект:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.sng-it.ru [NC]
RewriteRule ^(.) http://sng-it.ru/1 [R=301,L]
Автоматическое создание кода
Иногда собственных навыков и опыта не хватает для самостоятельного создания кода, и тогда вы можете обратиться в техподдержку или применить автоматические онлайн-генераторы.
Чтобы поисковая система распознавала два разных адреса как один сайт, должна исправно работать постоянная переадресация. Для оптимизации сайта, устранения неполадок и недоработок есть надежный инструмент - 301 редирект.
Пользуйтесь этим инструментом осторожно и с умом, чтобы не вызвать сбой в работе и не потерять позиции сайта в поисковиках.