Редирект – это переадресация. Нужен он для того чтобы перенаправить пользователей на другой URL (страницу или запись сайта) отличный от того, который они первоначально запросили. Например, если человек в адресной строке пишет ваш-сайт.com при правильной настройке он попадет на www.ваш-сайт.com или наоборот.
Существует несколько кодов ответа при редиректе
В спецификации HTTP/1.0:
301 – буквально означает “Документ перенесен окончательно”,
302 – “Документ перенесен временно”.
В спецификации протокола HTTP/1.1 появились такие коды:
303 – “ищите документ здесь”, код ответа указывает браузеру на то, что искомый документ требуется запросить методом GET, даже если первоначальный запрос выполнялся другим методом. Это код ответа, введенный для замены кода 302 в протоколе HTTP/1.1,
307 – “Запрашиваемый документ на короткое время доступен по другому URI”, указывает браузеру, что искомый документ требуется запросить тем методом (GET/POST), которым был выполнен первичный запрос, менять метод запроса запрещается. Этот код ответа также введен для замены кода 302 в протоколе HTTP/1.1,
308 – “Запрошенный документ был окончательно перенесен на новый URI”, этот код ответа добавлен в HTTP/1.1 вместо кода 301, дополнительно он означает, что метод запроса (GET/POST) при переходе по новому URI менять не разрешается. Если вы запросили ресурс в первом запросе методом GET, то и второй запрос должны выполнить методом GET.
Чаще всего для переадресации используется код ответа 301, поэтому переадресацию ещё называют 301-м редиректом. Все примеры в статье будут использовать именно этот код ответа. Настраивать 301-й редирект можно разными способами: PHP, JS, .htaccess, а также специальными плагинами.
Мы рассмотрим как это сделать с помощью плагина Redirection, а также путём редактирования файла .htaccess.
Плагин Redirection (Перенаправление)
После установки плагина Redirection на ваш сайт нужно перейти к его настройке. Это можно сделать одним из способов:
- В консоли сайта, в разделе “Инструменты” перейти на вкладку Redirection.
- Найти его в разделе плагины и нажать “Настройки”.
Для минимальной настройки редиректа достаточно заполнить только два поля, Source URL и Target URL в разделе Redirection.
С помощью этого плагина можно заменить некоторые длинные ссылки на более короткие. Это больше необходимо для удобства пользователь, поскольку короткие cсылки легче воспринимаются.
Подробнее о настройке плагина Redirection можно прочитать
в статье https://hostenko.com/wpcafe/plugins/rukovodstvo-po-url-perenapravleniyam-dlya-wordpress-saytov/
Редактирование файла .htaccess
В разделе управления хостингом указаны данные для подключения к файлам вашего сайта по FTP. Для подключения нужно использовать ftp-клиент, например Filezilla.
После подключения приступаем к редактированию файла .htaccess. Он находится в корневом каталоге вашего сайта.
Для редактирования стоит использовать такой редактор кода, в котором есть возможность задавать кодировку и формат конца строк, например, Notepad++.
Рассмотрим примеры переадресации:
- Редирект http://example.com на https://example.com, с учётом ссылок:
После подключения ssl-сертификата стоит добавить обязательную переадресацию с http на https, чтобы все ваши соединения были зашифрованы. Такой редирект исключит возможность подключения по протоколу http.
Для этого в самое начало файла .htaccess вставляем скопированные строки:
# BEGIN Redirect
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# END Redirect
- Редирект с www.example.com на example.com, с учётом ссылок:
# BEGIN Redirect
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# END Redirect
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
стоит заменить на:
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
3. Редирект example.com на www.example.com, с учётом ссылок:
# BEGIN Redirect
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# END Redirect
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
стоит заменить на:
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
При настройке данного редиректа нужно изменить название вашего сайта в базе данных, добавив www. Сделать это нужно в phpMyAdmin, отредактировав строки
siteurl и home в таблице wp_options (если префикс таблиц в вашей БД – “wp_”).
- Избавиться от технического домена вида example.hostenko.com.
По умолчанию при подключении вашего собственного домена на нашем хостинге автоматически добавляется 301 редирект с технического домена на ваш собственный. Но если вам это не подходит, можете сделать технический домен вида example.hostenko.com полностью недоступным с помощью кода указанного ниже. Им следует заменить тот код, который добавляется автоматически при подключении собственного домена.
Но стоит учитывать, что если ваш сайт уже имеет какой-то вес в поисковых системах, то эти достижения будут утеряны, а с 301 редиректом они сохранятся и перейдут на ваш новый домен.
# BEGIN Redirect old domain to 404
RewriteCond %{HTTP_HOST} ^example.hostenko.com$ [NC]
RewriteRule ^(.*)$ - [R=404,L]
# END Redirect
Это будет означать что сайт не будет открываться по домену example.hostenko.com
Важно! При сохранении отредактированного файла обязательно стоит убедиться, что формат конца строк в UNIX-формате (LF), а также кодировка в формате UTF-8 без BOM.
Если Вы хотите использовать несколько из вышеперечисленных редиректов, стоит прописать их в такой последовательности:
- Избавление от старого домена.
- Перенаправление с www.example.com на example.com или Перенаправление example.com на www.example.com.
- Перенаправление http://example.com на https://example.com.
Существует много других правил, в частности, использующих регулярные выражения. Но они индивидуальны и нужны не так часто, как те, что описаны выше и их описание выходит за рамки данной статьи.
Если у вас возникла необходимость написать более сложные правила переадресации, советуем посмотреть документацию по web серверу apache 2 и его модулю mod_rewrite, а также по регулярным выражениям формата PCRE:
- https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
- https://httpd.apache.org/docs/2.4/rewrite/
- http://pcre.org/current/doc/html/
Комментарии к записи: 2
Здравствуйте!
Воспользовался плагином Redirection. Имею SSL сертификат. Но SSL настройка показала Восклицательный Знак с вот таким предупреждением:
WordPress 301 redirect enabled. We recommend to enable the .htaccess redirect option on your specific setup.
Этот метод поможет решить, или может навредить? :
Здравствуйте. Вы решили эту проблему? Аналогичная проблема.