Редирект — это перенаправление браузера с одной веб-страницы на другую. В этой статье мы расскажем чем могут быть полезны подобные перенаправления, и рассмотрим несколько вариантов настройки редиректов в WordPress.
Зачем нужны редиректы
Редиректы чаще всего используются при смене домена или адреса сайта. Это позволяет посетителям и поисковым роботам находить содержимое используя старые адреса, и не терять при этом все внешние ссылки указывающие на старый домен.
При смене формата постоянных ссылок (ЧПУ) в WordPress, тоже часто настраивают редиректы, хотя во многих случаях ядро WordPress может самостоятельно настроить внутренние перенаправления. Это также касается смены названия определенной статьи или страницы.
Редиректы также используются для создания упрощенных или укороченных версий некоторых более длинных адресов. Например на WP Magazine мы используем адрес wpmag.ru/subscribe для переадресации пользователей на форму подписки на рассылку MailChimp. Плюсом в таком подходе является то, что при смене провайдера почтовых рассылок, нам нужно будет изменить адрес лишь в одном месте.
Типы редиректов
Существует два основных типа редиректов — постоянный (301) и временный (302, или иногда 307). Числа в скобках это коды, используемые в протоколе HTTP при перенаправлении.
Чтобы узнать, какой тип редиректа используется в конкретном случае, можно воспользоваться вкладкой Network/Сеть в панели для разработчиков браузера Chrome или Firefox, и просмотреть заголовки передаваемые веб-сервером.
Учтите, что постоянный редирект не означает, что его нельзя будет в будущем изменить. Постоянные редиректы запоминаются браузерами и поисковыми системами на более долгий срок, чем временные редиректы.
Редирект с помощью плагина в WordPress
Самым популярным плагином для работы с редиректами в WordPress является Redirection. Данный плагин насчитывает более двух миллионов скачиваний и полностью совместим с последней версией WordPress.
Плагин Redirection позволяет создавать неограниченное количество редиректов, просматривать статистику по перенаправлениям, а также отслеживать ошибки 404 (не найдено) на сайте WordPress. Redirection также поддерживает регулярные выражения.
В качестве альтернативы можно рассмотреть более новый плагин Safe Redirect Manager от разработчиков из компании 10up. Данный плагин имеет более приятный пользовательский интерфейс, поддерживает регулярные выражения и полностью поддерживает режим Multisite.
Следует также упомянуть плагин Simple 301 Redirects, который является более простым решением для перенаправлений в WordPress. Именно данный плагин мы используем на сайте WP Magazine.
Редирект с помощью .htaccess
Если ваш хостинг-провайдер использует веб-сервер Apache, то вам наверняка предоставлен доступ к дополнительному файлу конфигурации .htaccess, в котором можно настроить редиректы, например:
Redirect 301 /subscribe http://example.org/path/to/subscribe
А с помощью директивы RedirectMatch
в файле .htaccess можно настроить редиректы с использованием регулярных выражений:
RedirectMatch ^/foo/(.*)$ http://example.org/bar/$1
Если на вашем сервере используется nginx, то редиректы можно настроить в файле конфигурации веб-сервера с помощью директивы rewrite
в контексте server
. Учтите, что если вы используете shared-хостинг, прямого доступа к файлам конфигурации nginx у вас скорее всего не будет, но большинство хостинг-провайдеров позволяют добавить перенаправления через специальный интерфейс, или с помощью службы технической поддержки.
rewrite ^/foo/(.*)$ http://example.org/bar/$1 permanent;
Плюсом данных методов является то, что редиректы обрабатываются еще до запуска обработчика .php файлов и WordPress, поэтому такие редиректы как правило создают меньше нагрузки на сервер, хотя при грамотном кэшировании HTTP запросов в WordPress, это не имеет значения.
Использование wp_redirect() и wp_safe_redirect()
В WordPress есть две встроенные функции для редиректов: wp_redirect()
и wp_safe_redirect()
.
Данные функции отличаются только тем, что wp_safe_redirect()
проверяет адрес и сравнивает его со списком «разрешенных» хостов. Этим списком можно управлять с помощью специального фильтра allowed_redirect_hosts
.
Вторым аргументом к функциям можно указать тип редиректа, например 301 или 302. Использовать эти функции можно в собственном плагине, что может быть легкой альтернативой выше-упомянутым плагинам, особенно для опытных разработчиков WordPress:
add_action( 'template_redirect', function() { if ( preg_match( '#^/subscribe/?$#i', $_SERVER['REQUEST_URI'] ) ) { wp_redirect( 'http://example.org/path/to/subscribe', 301 ); exit; } } );
Заключение
В заключение стоит отметить, что редиректы это первое, что чаще всего теряется при переезде сайта от одного хостинг-провайдера к другому. Поэтому все редиректы лучше хранить в одном месте.
Также советуем использовать инструменты для веб-мастеров от поисковых систем Google и Яндекс. Они покажут вам несуществующие страницы на вашем сайте, на которые ссылаются другие страницы. Подобное поведение часто является результатом потерянных редиректов или опечаток в адресах.