- Блог
- О разработке
- Как сделать редирект
Редирект – это важный для работоспособности сайта инструмент. Его делают из технической необходимости, для продвижения и повышения трафика. Редирект может потребоваться в случае неработоспособности некоторых страниц, переезда сайта на новый адрес и во многих других случаях. Однако его настройка имеет множество нюансов, о которых нужно знать, прежде чем начинать использовать редирект.
Сайты постоянно меняются: изменяется контент, поисковики выдвигают новые требования. Старые страницы становятся недоступны, взамен них появляются новые. Иногда сайт нужно перевести на другой домен, защищенный протокол или просто на адрес со слешем в конце. Чтобы при любых изменениях нужные страницы всегда были доступны, делают редирект. Он позволяет переводить пользователя на актуальный адрес без потери трафика и ссылочной массы.
Редирект – это перенаправление с одного URL-адреса на другой. При настроенном редиректе пользователь заходит на страницу, и тут же перенаправляется на другую. Это нужно для того, чтобы скрыть неработающую или неактуальную страницу.
Сайты борются за место в ТОПе поисковых систем. Чтобы ресурс оставался на ведущих позициях, его нужно постоянно развивать: добавлять новые разделы, функции, контент. Иногда изменения негативно сказываются на оптимизации. Например, сайт могут перевести на безопасный протокол https, и он станет доступен по новому адресу, а старый перестанет работать. Чтобы этого не произошло, делают автоматическое перенаправление со старого адреса на новый. Тогда пользователь, который воспользуется старой ссылкой, автоматически перейдет по новому адресу, например, с http://example.ru на https://example.ru.
Перенаправление происходит быстро, и пользовать может даже не заметить его. Однако сделать редирект не так легко, как кажется – в настройке есть множество нюансов. Важно сделать его правильно, чтобы не ухудшить пользовательский опыт и не нарушить требования поисковых систем.
Редирект может понадобиться в разных случаях. Например, в интернет-магазинах часто меняется ассортимент. Пользователь хочет перейти в карточку товара, но получает ошибку 404. Вместо этого его можно было бы перевести его на страницу с набором похожего товара. Редирект позволяет перенаправлять пользователей на нужные url-адреса в соответствии с требованиями поисковых систем и сохранять трафик.
Перенаправление делают в разных целях. Иногда это техническая необходимость, а иногда он нужен для повышения трафика. Чаще всего перенаправление настраивают в следующих ситуациях:
при переводе сайта с http:// на https://;
при переходе сайта на новый домен;
при переходе на новую CMS может потребоваться изменить url-адрес некоторых веб-страниц. Чтобы сохранить эти страницы доступными, нужен редирект;
перенаправление с адреса без www на url с www или наоборот;
при перенаправлении пользователя на мобильную версию сайта: с www.example.ru на www.m.example.ru;
для аккумуляции трафика с сайтов из разных доменных зон, например, с .org, net, .com, .biz на .ru;
при переносе раздела сайта на субдомен, например, для перехода с www.example.ru на www.ex.example.ru.
Также перенаправление применяется для целей SEO. Редирект – важный инструмент оптимизации, он может пригодиться в ряде случаев:
для склейки адресов страниц, например, страницы без https:// и с ним;
когда нужно перевести сайт на новый домен и не потерять позиции в поисковой выдаче;
для обработки повторяющихся страниц;
при перенаправлении с неактуальных или удаленных страниц на актуальные.
Редирект позволяет сохранить позиции сайта в поисковой выдаче, перенаправлять или аккумулировать трафик на страницах.
Ситуаций, когда он может потребоваться, много, но злоупотреблять им не стоит. Неправильно настроенное перенаправление может привести к неработоспособности всего сайта или отдельных его элементов, к пессимизации ресурса, медленной загрузке. Чтобы этого избежать, лучше всего обратиться за помощью к программистам – только они могут сказать, насколько обоснован такой метод в конкретном случае, и сделать качественное перенаправление.
Однако есть много типовых ситуаций, для которых существует выработанный алгоритм создания перенаправления, и им может воспользоваться даже непрофессионал.
В некоторых случаях редирект помогает продвижению сайта и сохранению пользовательского трафика. Но бывают ситуации, когда он опасен для оптимизации:
страницы с отдельными ссылками, которые принадлежат разным каталогам;
дорвеи и несуществующие сайты;
если сайт попал под бан или фильтры, не стоит создавать новый сайт и делать на него редирект – это не решит проблему.
Вообще, редирект не стоит использовать в тех ситуациях, когда можно обойтись без него. Вмешиваясь в код сайта, вы рискуете сделать ошибку, которую будет затратно исправлять. Если без перенаправления не обойтись, можно привлечь профессиональных разработчиков или попытаться настроить его самостоятельно.
С точки зрения пользователя все редиректы работают одинаково: автоматически переводят с одной страницы на другую. Но для браузеров и поисковых систем они разные. Перенаправления могут иметь HTTP-статус 301, 302, 303, 307.
Редирект с HTTP-статусом 301 сообщает браузерам и роботам поисковиков, что ресурс навсегда переместили на новый адрес. Поэтому когда браузер получает ответ 301, он делает новый запрос на сервер и перенаправляет пользователя на актуальный адрес. При этом авторитет и ссылочный профиль старой страницы передаются на новую.
Постоянный редирект 301 необходим в случае переезда сайта или отдельных страниц на новый адрес, перехода на https://, объединения трафика с доменных зон и т.д. Во всех этих случаях страницы навсегда перемещаются по новому адресу.
Не стоит использовать его для временного перемещения страниц, а также если сайт попал под фильтры или в бан. К новым адресам применятся те же санкции поисковиков, и ситуация не улучшится.
Редирект с HTTP-статусом 302 означает временное перемещение страниц на новый адрес. При этом браузер распознает статус 302 как «Найдено» или Found и расценивает сайт как существующий ресурс, на некоторое время переехавший на новый адрес. При этом авторитет и ссылочный профиль остаются на изначальной странице, а новая индексироваться не будет. Такой вариант подойдет при обновлении сайта, а также для геотаргетинга, А/В-тестирования, перенаправления при отсутствии ресурса в результатах поиска, для временных или сезонных товаров в интернет-магазине.
Редиректы 303 и 307 используются в качестве альтернативы 302. Их можно использовать, когда контент не переносится на новый ресурс, а вместо искомого адреса вы предлагаете другую страницу, сайт или документ.
При использовании редиректа 303 браузер будет делать запрос безопасным методом GET, вне зависимости от того метода, каким был запрошен исходный документ. При использовании редиректа 307 запрашиваемый документ на короткое время будет доступен по другому URL с сохранением метода передачи запроса (GET, POST)
Авторитет и ссылочная масса остаются за исходным сайтом. При этом не стоит устанавливать их более, чем на 10 дней, чтобы не попасть под фильтры поисковиков.
Настроить редирект можно несколькими способами: через админку сайта или в файловом менеджере, в специальных сервисах, а также изменяя код в файле .htaccess, nginx.config или web.config. Также перенаправление можно сделать с помощью PHP или HTML.
Выбрать способ создания редиректа может профессионал. Только программист точно понимает, что он делает и зачем. Для программиста код – это не набор странных спецсимволов, а понятные инструкции для браузера или сервера.
Непрофессионал может лишь воспользоваться типовыми способами, и во многих случаях этого будет достаточно. Но типовые способы не учитывают особенности сайта и ситуации, в которой делается перенаправление. Типовой способ может не подойти вашему сайту, и это нарушит его работу. Поэтому рациональнее всего обратиться к разработчикам. Но если у вас нет такой возможности и желания, вы можете разобраться, как сделать редирект непрофессионалу самостоятельно.
Помните, что любое вмешательство в код может привести к непредвиденным последствиям. Поэтому заранее делайте бэкап, чтобы в случае ошибки восстановить работоспособность сайта.
PHP – серверный язык программирования, поэтому переадресация осуществляется через веб-сервер. Когда пользователь захочет попасть на сайт, его браузер запросит файл искомой страницы с сервера, например, page.php. Сервер получит запрос от браузера и сообщит ему, что файл page.php перемещен на новый адрес – newpage.php. Браузер обработает эту информацию, а затем запросит с веб-сервера файл newpage.php. Когда с сервера придет ответ, браузер сможет отобразить страницу файла newpage.php. Описание процесса может показаться длинным, но на самом деле все происходит мгновенно.
Чтобы сделать редирект всего сайта с помощью PHP, найдите в корневой папке сайта индексный файл. Обычно его называют index.php. Воспользуйтесь функцией header( ). В скобках нужно вписать заголовок Location – он укажет на перенаправление по определенному адресу – этот адрес нужно будет написать рядом.
Не забудьте вместо http://example.ru/index1.php указать адрес, на который будет перенаправлен пользователь. Обратите внимание, что в примере указано соединение через http://. Если вы используете защищенное соединение https://, укажите его.
Сохраните изменения. Если вы все сделали по инструкции, старая ссылка будет автоматически перенаправлять на новый адрес.
Если вам нужно сделать переадресацию не всего сайта, а определенной страницы, воспользуйтесь функцией if( ). В скобках после $_SERVER['REQUEST_URI'] === нужно указать страницу, с которой делается переадресация.
<?
if( $_SERVER['REQUEST_URI'] === 'site/page1.html' ){
header(" Location: http://example.com/page2.html ");
}
?>
Вместо site/page1.html вставьте адрес страницы, с которой происходит переадресация, а вместо http://example.com/page2.html – адрес, на который пользователь будет перенаправлен.
Не всегда нужно перенаправлять пользователя с одной страницы на другую сразу. Иногда сначала нужно показать рекламный баннер или вывести на экран предупреждение о перенаправлении. Чтобы сделать редирект с задержкой, воспользуйтесь функцией sleep( ).
Ее нужно вставить в индексный файл index.php перед функцией header( ), а в скобках указать длительность задержки в секундах:
В этом примере задержка перед переадресацией составит 20 секунд. Вы можете указать любое другое число секунд.
HTML-редирект использует тег Refresh. Этот тег влияет на переадресацию в браузере, а не на веб-сервере, поэтому перенаправление занимает больше времени. Браузеру сначала нужно послать запрос файла стартовой страницы на веб-сервер, затем получить нужный файл и «прочитать» его код. Он будет «читать» файл, пока не найдет указание на отображение другого файла вместо этого. Браузеру нужно будет снова послать запрос на сервер, и только после получения нового файла он сможет отобразить пользователю нужный сайт.
Такой способ негативно влияет на продвижение сайта в поисковиках, поэтому его стоит использовать только в том случае, если никакие другие способы недоступны.
Чтобы настроить HTML-редирект, нужно открыть индексный файл страницы, который обычно называется index.php. Внутри файла в блоке <head> пропишите метатег Refresh:
Не забудьте заменить http://example.ru на адрес, куда вы собираетесь перенаправить пользователя. Если вы хотите, чтобы перенаправление на другой адрес произошло сразу, оставьте внутри кода content="0 без изменений. Если вы хотите сначала показать пользователю исходную страницу, а затем совершить перенаправление, то в content="0 вместо 0 впишите то количество секунд, которое вам нужно для демонстрации пользователю изначальной страницы. Например, если вы укажите content="15, то пользователь в течение 15 секунд будет видеть старую страницу, а затем его перенаправят на новую.
Сохраните изменения и проверьте, работает ли редирект.
Файл .htaccess содержит набор дополнительных инструкций для серверов Apache. С его помощью можно изменить программу действий, но при этом не менять настройки сервера. Изменение конфигурационного файла вызывает изменение действий веб-сервера в целом, а с помощью настройки .htaccess можно менять отдельно взятые каталоги, подкаталоги и папки. Поэтому .htaccess удобно использовать как для редиректа всего сайта, так и отдельных его страниц.
Чтобы сделать перенаправление на другой домен, нужно найти в корневой папке сайта файл .htaccess и добавить в него следующую команду:
RewriteEngine On
RewriteCond %{HTTP_HOST} example-1.ru
RewriteRule (.*) https://example-2.ru/$1 [R=301,L]
Вместо example-1.ru вставьте адрес своего сайта, с которого будет происходить перенаправление. Вместо example-2.ru вставьте адрес сайта, на который будет происходить перенаправление. Обратите внимание, что в примере указано безопасное соединение https://. Если у вашего сайта незащищенное соединение http://, укажите его.
Сохраните изменения и проверьте, происходит ли перенаправление.
Чтобы сделать перенаправление с одной страницы на другую, добавьте в файл .htaccess строчку:
RewriteRule ^(.*)page-1.html$ https://example.ru/page-2.html [R=301,L]
Вместо page-1 впишите адрес страницы, с которой будет происходить перенаправление, а вместо https://example.ru/page-2.html – адрес, на который будете перенаправлять пользователя. Обратите внимание, что в примере указано безопасное соединение https://. Если у вашего сайта незащищенное соединение http://, укажите его.
Сохраните изменения и проверьте, работает ли редирект.
Чтобы сделать перенаправление только с главной страницы, найдите в корневой папке сайта, с которого будете делать редирект, файл .htaccess. Добавьте в него следующие строки:
RewriteEngine On
RewriteRule ^$ https://page.ru [R=301,L]
Вместо https://page.ru пропишите адрес сайта, на который будетеперенаправлять пользователя. Обратите внимание, что в примере указано безопасное соединение https://. Если у вашего сайта незащищенное соединение http://, укажите его.
Сохраните изменения и проверьте, перенаправляет ли главная страница на другой адрес.
Перевести на безопасное соединение https:// можно как весь сайт, так и отдельные страницы. Чтобы перевести на https:// сразу все страницы сайта, впишите в файл .htaccess код:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Сохраните изменения и проверьте, происходит ли перенаправление. Если редирект не работает, попробуйте вместо предыдущего кода вписать такие строки:
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Если это тоже не помогает, и возникает циклическая переадресация, попробуйте такой вариант вместо предыдущих:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Можете воспользоваться еще одним вариантом кода:
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Чтобы перевести на https:// отдельные выбранные страницы, вставьте следующие строки:
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/page.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Замените page.php адресом страницы. Сохраните изменения и проверьте, работает ли редирект. Если не сработало, вместо предыдущего варианта попробуйте вставить такие строки:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} =/page.php
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
В этом варианте page.php также замените адресом страницы, для которой делаете редирект.
Чтобы сделать перенаправление с сайта без www на домен с www, найдите в корневой папке сайта файл .htaccess. Добавьте в него следующие строки:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Сохраните изменения, обновите страницу и проверьте, перенаправляет ли браузер на домен с www.
Если вы хотите сделать перенаправление на страницу с GET-параметрами, откройте корневую папку сайта, найдите в ней файл .htaccess и впишите в него строки:
RewriteCond %{REQUEST_URI} /index.php
RewriteRule ^(.*)$ https://example.ru/ [R=301,L]
Вместо https://example.ru/ вставьте адрес страницы, на которую будет происходить перенаправление. Обратите внимание, что в примере указан протокол https://, если вы используете протокол http://, то вставьте его.
Иногда могут быть заданы не все GET-параметры, или какие-то из них содержат произвольные значения. Например, если произвольное значение содержит параметр SECTION_ID, код будет выглядеть так:
RewriteCond %{QUERY_STRING} ^IBLOCK_ID=1&SECTION_ID=(.*)$ [NC]
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]
Вы можете заменить SECTION_ID другим произвольным параметром.
Сохраните изменения, обновите страницу и проверьте, все ли работает.
Чтобы сделать перенаправление по конкретному IP, откройте корневую папку сайта, найдите в ней файл .htaccess и впишите в файл строки:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} 123.123.123.123
RewriteRule ^(.*)$ https://example.ru [R=301,L]
Замените 123.123.123.123 на нужный вам IP-адрес, а https://example.ru – на адрес домена, на который будет совершен редирект. В примере указан протокол https:// – впишите тот, который используете.
Для избегания дублей в файле .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]
Не забудьте сохранить изменения и проверить, корректно ли работает перенаправление.
Для того, чтобы открывать страницу со слешем по запросу страницы без слеша, впишите в файл .htaccess следующее:
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
Сохраните изменения и проверьте результат.
Если вам нужно сделать редирект на index php, вставьте в файл .htaccess строки:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
RewriteRule ^(.*)index\.(php|html|htm)$ https://example.ru/$1 [R=301,L]
Вместо https://example.ru введите адрес вашего сайта. Обратите внимание, что в примере указан протокол https://, если вы используете протокол http://, то впишите его. Сохраните изменения и проверьте перенаправление.
Если приходит запрос на страницу, которая удалена, пользователь видит код 404 Not Found. С нее можно перенаправить пользователя на другую страницу сайта, например, на главную. Чтобы это сделать, пропишите в файле .htaccess команды:
Вместо https://www.example.ru./301.html вставьте адрес страницы, на которую перенаправляете. Обратите внимание, что в примере указан протокол https://, если вы используете протокол http://, впишите его. Сохраните изменения и проверьте, все ли получилось.
Изменять файл .htaccess можно только при работе с веб-сервером Apache. Это весьма популярный сервер, но не единственный. Для работы с набором серверов IIS нужно настраивать файл web.config.
Чтобы сделать перенаправление с одного сайта на другой, найдите в корневой папке сайта файл web.config и впишите в него следующие строки:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="301 Redirect 1" stopProcessing="true">
<match url=".*" />
<action type="Redirect" url="https://example.ru" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Вместо https://example.ru впишите адрес домена, на который будет перенаправляться пользователь. Сохраните изменения и проверьте, работает ли перенаправление.
Чтобы сделать редирект с одной страницы на другую, нужно открыть корневую папку сайта, найти в ней файл web.config и прописать в нем следующие строки:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<location path="page.html">
<system.webServer>
<httpRedirect enabled="true" destination="https://example-2.ru/page-2.html" httpResponseStatus="Permanent" />
</system.webServer>
</location>
</configuration>
В этом примере показано, как сделать перенаправление с адреса https://example.ru/page.html на https://example-2.ru/page-2.html. В третьей строке кода вместо page.html впишите адрес страницы, с которой будет происходить перенаправление, а вместо https://example-2.ru/page-2.html впишите адрес страницы, на которую будет происходить перенаправление. Впишите тот протокол (http:// или https://), который указан в адресе конечной страницы.
Если нужно сделать редирект с адреса в формате example.ru/?p=1520 на адрес в формате example.ru/page.html, воспользуйтесь таким кодом:
Вместо example.ru впишите адрес своего сайта. Если не требуется передавать значение «p=1520», то укажите значение параметра «appendQueryString=„false“»
Если нужно перенаправить пользователя с адреса в формате example.ru/page.aspx?id=1051 на адрес в формате example.ru/page/1051, впишите следующие строки:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="301 Redirect 2" stopProcessing="true">
<match url="(.+)\.aspx$" />
<conditions>
<add input="{QUERY_STRING}" pattern="^id=([0-9]+)" />
</conditions>
<action type="Redirect" url="{R:1}/{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Не забудьте сохранить изменения и проверить результат.
Для переноса пользователей с главной страницы на внутреннюю, впишите в файл web.config код:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.ru$ [NC]
RewriteRule ^$ https://www.example-2.ru/page/ [R=301,L]
Вместо www\.example\.ru вставьте адрес главной страницы, а вместо https://www.example-2.ru/page/ – адрес страницы, на которую будет совершено перенаправление. Сохраните изменения и проверьте правильность редиректа.
Чтобы сделать перенаправление с index.php на главную страницу сайта, впишите в файл web.config строки:
location = /index.php {
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://www.example.ru/ [R=301,L]
Вместо https://www.example.ru впишите адрес главной страницы вашего сайта. В примере указан протокол https://, но если вы используете http://, впишите его. Сохраните изменения и проверьте редирект.
Чтобы перевести основной домен и все поддомены сайта на безопасное соединение https://, добавьте в файл web.config следующие строки:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Для перевода на https:// только основного домена без поддоменов, впишите код:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{HTTP_HOST}" pattern="^domain\.ru" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Сохраните изменения и проверьте, произошло ли перенаправление на сайт с безопасным протоколом.
Откройте корневую папку сайта, и впишите в файл web.config строки кода:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
</conditions>
<action type="Redirect" url="http://{C:1}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Сохраните изменения, обновите страницу и проверьте, произошло ли перенаправление на адрес с www.
Редирект на веб-сервере Nginx имеет свои особенности. В частности, используется файл корневой папки сайта nginx.conf. Если у вас настроен виртуальный хостинг, то изменения вносите в конфигурационный файл соответствующего виртуального хоста. Директиву необходимо добавлять в блок server конфигурационного файла.
Чтобы перенаправить пользователя с одного домена на другой, впишите в файл nginx.conf (или в конфигурационный файл вашего виртуального хоста) следующие строки:
Вместо www.example.ru вставьте адрес сайта, на который будет происходить перенаправление. Сохраните изменения и проверьте, все ли получилось.
Чтобы перенаправить пользователя на другую страницу, впишите в файл nginx.conf (или в конфигурационный файл вашего виртуального хоста) код:
server {
#...
if ( $request_filename ~ example-1.html/ ) {
rewrite ^ example-2.html permanent;}
#...
}
Вместо example-1.html/ впишите адрес страницы, с которой будет происходить перенаправление, а вместо example-2.html – адрес страницы, на которую произойдет перенаправление. Сохраните изменения и проверьте перенаправление.
При переходе на безопасный протокол https://, нужно сделать редирект с помощью файла nginx.conf или конфигурационного файла вашего виртуального хоста. Впишите в них строки:
Сохраните изменения и обновите страницу, чтобы проверить редирект.
Чтобы перенаправить пользователя со страницы без www в адресе на страницу с www в адресе, впишите в файл nginx.conf (или в конфигурационный файл вашего виртуального хоста) код:
server {
#...
if ($host ~* ^[^.]+\.[^.]+$) {
rewrite ^(.*)$ $scheme://www.$host$1 permanent;
}
#...
}
Сохраните изменения и проверьте, есть ли результат.
Чтобы перенаправить пользователя со страницы с www в адресе на страницу без www в адресе, впишите в файл nginx.conf (или в конфигурационный файл вашего виртуального хоста) код:
server {
#...
if ($host ~* www\.(.*)) {
set $host_wi thout_www $1;
rewrite ^(.*)$ http://$host_without_www$1 permanent;
}
#...
}
Сохраните изменения и проверьте, работает ли перенаправление.
Каждая CMS имеет свои особенности настройки. Разберем, чем отличается редирект в 1С-Битрикс, WordPress, OpenCart, Joomla, и как его настроить в каждой CMS.
Чтобы сделать редирект в Битриксе, нужно внести изменения в файл .htaccess. Обычно он располагается в разделе «Контент» → «Файлы и папки», хотя его можно разместить в любом каталоге. В файле .htaccess. пропишите:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.ru$ [NC]
RewriteRule ^(.*)$ example-2.ru$1 [R=301,L]
Вместо example.ru впишите адрес сайта, с которого будет происходить перенаправление, а вместо example-2.ru – адрес сайта, на который перенаправляете. Сохраните изменения и проверьте результат.
Более подробную инструкцию о редиректе через .htaccess вы можете найти в разделе выше.
Редирект в WordPress можно настроить при помощи плагина, один из самых популярных – Redirection. Разберем настройку перенаправления на его примере, так как многие плагины работают похожим образом.
Сначала добавьте плагин к WordPress:
Зайдите в админку.
Кликните на раздел «Плагины», выберите пункт «Добавить новый». Откроется строка поиска, введите в ней «Redirection».
Нажмите на кнопку «Установить» и следуйте инструкции установки.
После установки нажмите на «Активировать».
Готово – вы установили плагин. Теперь с его помощью можно настраивать перенаправление.
После активации плагина перейдите в раздел «Редиректы».
В блоке «Добавить новое перенаправление» нужно ввести исходный URL-адрес и целевой URL-адрес. Исходный адрес нужно написать без домена, только последнюю часть со слешем: /page-1. Целевой адрес напишите целиком, если ссылка будет вести на другой сайт: https://example.ru. Если ссылка должна вести на другую страницу, то укажите адрес без домена: /page-2.
Кликните на кнопку «Добавить перенаправление».
Удостоверьтесь, что все работает, и вы не допустили ошибку в URL-адресе.
Чтобы сделать редирект в OpenCart, нужно внести изменения в файл .htaccess. Его можно найти через файловый менеджер хостинга в корневой папке сайта public_html. В файле .htaccess. пропишите:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.ru$ [NC]
RewriteRule ^(.*)$ example-2.ru$1 [R=301,L]
Вместо example.ru впишите адрес сайта, с которого будет происходить перенаправление, а вместо example-2.ru – адрес сайта, на который перенаправляете. Сохраните изменения и проверьте, все ли работает.
Более подробную инструкцию о редиректе через .htaccess вы можете посмотреть в пункте с соответствующим названием.
Настроить перенаправление на Joomla можно с помощью плагина. Его нужно активировать в настройках сайта.
Зайдите в административную панель, выберите раздел «Расширения», а затем «Менеджер плагинов».
Найдите в списке плагин «Система – Перенаправления» и включите его, нажав на крестик рядом с названием, вместо него появится галочка. Если галочка там есть изначально, значит, плагин итак включен.
Итак, вы включили плагин. Теперь можно настроить перенаправление.
Откройте раздел «Компоненты», он находится в верхней панели. Выберите пункт «Перенаправления».
Чтобы добавить редирект, найдите в левом верхнем углу кнопку «Создать» и нажмите на нее. Появится блок с полями «Исходный URL» и «Новый URL». В блоке «Исходный URL» адрес нужно написать без домена, только последнюю часть со слешем: /page-1. Целевой адрес напишите целиком, если ссылка будет вести на другой сайт: https://example.ru. Если ссылка ведет на другую страницу, то укажите адрес без домена: /page-2.
Нажмите «Сохранить и закрыть» и проверьте, работает ли редирект и нет ли ошибки в URL-адресе. Готово – вы настроили перенаправление.
Сервисы для автоматического создания кода помогают сгенерировать его и сразу вставить в документ. Вам нужно лишь выбрать параметры редиректа и вписать URL исходной и конечной страниц.
301 Redirect Code от RapidTables – простой генератор кода. Достаточно ввести ссылки на исходную и конечную страницу, выбрать тип редиректа и в сером поле появится код, который можно скопировать. Сервис поддерживает PHP, ASP, ASP.NET, Apache .htaccess, HTML, Javascript - редиректы. Комментарии со ссылкой на инструмент можно удалить.
Seo Zona – аналогичный сервис на русском языке.
301 Redirect Online Tools Examples Generators – сервис, с помощью которого можно сгенерировать код на PHP, для .htaccess, AWS S3. Позволяет вставить сразу несколько ссылок для нескольких редиректов, предлагает задать условия.
301 Redirect Generator от Webworkshop – сервис поддерживает перенаправление со страницы на страницу через PHP, ASP, ASP.NET, Apache .htaccess, HTML, Javascript. Редиректы с директории на директорию, с домена на домен и с домена без www на домен с www только через .htaccess.
Помните, что сервисы составляют код автоматически, они не учитывают особенности сайта и ситуации, в которой делается перенаправление. Универсальный вариант может не подойти в сложном случае, а неверный код нарушит работу всего сайта. Поэтому если у вас нестандартная ситуация, то рациональнее воспользоваться услугами программистов. Но с типовыми ситуациями сервисы генерации кода отлично справляются.
Когда настроите перенаправление, обязательно проверьте, работает ли оно. Опечатка в коде, неверный спецсимвол – все это может стать причиной ошибки. В итоге пользователь и на исходную страницу не сможет попасть, и на конечную.
Чтобы проверить, работает ли редирект, вы можете просто ввести старый адрес в браузере и посмотреть, произошло ли перенаправление. Перед этим очистите кэш или просто зайдите в режиме инкогнито.
Для проверки существуют специальные сервисы, например, Redirect Checker, Prcy-info, или Mainspy. Просто вставьте ссылку на проверяемую страницу, и сервис сообщит, работает ли перенаправление.
При вмешательстве в код непрофессионалами нередко случаются ошибки. Одна из самых распространенных – это циклическое перенаправление. Постоянное перенаправление с одного адреса на другой не дает открыть страницу и вызывает сбои в работе браузера, поэтому браузер выдает ошибку. Это может быть связано с неправильной настройкой файла .htaccess или плагина для CMS.
Возможных причин может быть очень много, но некоторые из них особенно распространены.
Ошибка настройки – опечатка в коде, неверный или лишний спецсимвол могут привести к ошибке. Проверьте правильность введенного кода и его расположения в файле.
Слишком длинная цепочка редиректов может привести к циклическому перенаправлению. В таком случае нужно сократить ее до двух звеньев: исходной и конечной страниц.
Конфликт плагинов. Если вы устанавливали плагин из непроверенных источников, может возникнуть ошибка. Если новый плагин конфликтует с установленным ранее, какой-то из них нужно удалить.
Ошибка в конфигурационном файле. У каждой CMS (WordPress, OpenCart, Joomla и т.д.) свой файл конфигурации с собственными правилами редиректа. Они могут конфликтовать с теми, которые вы установили. Чтобы найти и устранить конфликт, придется обратиться в техподдержку, на форум вашей CMS или к разработчикам.
Устанавливайте правила в конфигурационных файлах и скачивайте специальные плагины, если понимаете, что делаете и сможете исправить возникшую ошибку. Редирект лишь кажется простой задачей. В типовых случаях настроить его действительно может быть легко, но только профессиональный программист сможет сделать качественное перенаправление с учетом особенностей конкретного сайта и CMS.
Непрофессионалу может быть трудно настроить редирект, так как сложно учесть все нюансы. Но многих ошибок можно избежать, если придерживаться простых правил.
Избегайте переизбытка перенаправлений. Не ставьте подряд несколько редиректов, поисковые работы могут счесть это за мошенничество. К тому же это увеличит скорость загрузки сайта.
Переход на https:// или www, редирект по IP и т.д. настраиваются по разным схемам. Для каждого вида перенаправлений используйте свой алгоритм.
Не настраивайте временный редирект вместо постоянного, иначе вы передадите поисковым роботам неверную информацию.
Проверяйте сайт на битые ссылки и не допускайте перенаправления на страницу 404.
Служебные файлы редиректить не стоит, а файл robots.txt всегда оставляйте доступным для поисковых роботов.
Это основные моменты, на которые стоит обратить внимание. Если вы не уверены, что сможете самостоятельно настроить редирект, лучше обратиться к профессионалам. Неправильные настройки в лучшем случае могут просто не работать, а в худшем – стать причиной поломки сайта.
Редирект – это перенаправление с одного URL-адреса на другой. Он помогает сделать так, чтобы пользователь, который заходит на неактуальную страницу, тут же перенаправлялся на другую. Это может быть полезно, когда нужно перевести сайт с http:// на https://, со страницы без www в url-адресе на страницу с www, при переходе на новый домен или CMS, а также при перенаправлении с неактуальных или удаленных страниц на актуальные.
Настроить редирект можно несколькими способами: через админку сайта или в или в файловом менеджере, в специальных сервисах, а также изменяя код в файле .htaccess, nginx.config или web.config. Также перенаправление можно сделать с помощью PHP или HTML.
Каждый из этих способов предполагает свои команды и директории, которые можно найти выше. Вы можете воспользоваться сервисами для автоматического создания кода. Вам нужно лишь выбрать параметры редиректа и вписать URL исходной и конечной страниц, сервис сгенерирует код и вы сможете вставить его в файл страницы или сайта.
Помните, что любое вмешательство в код может привести к непредвиденным последствиям. Непрофессионал может лишь воспользоваться типовыми способами создания редиректа. Хотя во многих случаях этого будет достаточно, но типовые способы все же не учитывают особенности сайта и ситуации, в которой делается перенаправление. Типовой способ может не подойти вашему сайту, и это нарушит его работу. Поэтому рациональнее всего обратиться к разработчикам. Но если у вас нет такой возможности и желания, вы можете попробовать сделать редирект самостоятельно. Главное – заранее делайте бэкап, чтобы в случае ошибки восстановить работоспособность сайта.
* — поля обязательные для заполнения