- Редирект: что такое и какие виды бывают
- Что такое редирект?
- Зачем нужны редиректы?
- Виды перенаправлений
- Редирект 301
- Редирект 302
- Редиректы 303 и 307
- Типы редиректов
- Htaccess-редирект
- PHP-редиректы
- JavaScript-редирект
- HTML-редирект
- Сервисы для генерации кода редиректа
- Как проверить редирект страницы?
- Разбираем все виды редиректов (html, js, php, htaccess)
- Содержание:
- Редирект в HTML
- Редирект в JavaScript
- Редирект в PHP
- Редирект в .htaccess (RewriteEngine)
- Как исправить ошибку Слишком много перенаправлений в браузере
- Google Chrome
- Mozilla Firefox
- Safari
- Как определить причину цикличного перенаправления
- Как исправить ошибку перенаправлений (редиректов)
- Правильные настройки редиректов (перенаправлений)
- Принудительный HTTPS
- Принудительный HTTPS при использовании прокси-сервера
- Перенаправление с HTTP на HTTPS в Nginx
- Принудительно без www
- Принудительно с www
- Краткий итог
Редирект: что такое и какие виды бывают
Допустим, вы решили изменить имя сайта после ребрендинга или хотите сделать домен более коротким и понятным. Тогда вы спросите — как же минимизировать потерю трафика и не просесть в поисковой выдаче? Мы ответим — правильно настроить редирект!
В нашей статье вы найдёте подробную информацию о том, что это такое, познакомитесь с видами перенаправлений и узнаете, какие задачи решают редиректы.
Что такое редирект?
Редирект (или перенаправление домена) — это автоматическая переадресация посетителя с одного URL-адреса на другой.
При переходе на страницу, для которой настроен редирект, пользователь будет автоматически попадать на другую страницу. Например, при переходе по ссылке http://reg.ru/blog/ браузер автоматически перенаправляет пользователя на URL https://reg.ru/blog/. Как правило, для посетителей сайта этот переход остаётся незаметным.
Зачем нужны редиректы?
Редиректы помогают корректно перенаправлять посетителей на нужные страницы сайта без ущерба для пользовательского опыта и без нарушения требований поисковых систем. Правильно выполненный редирект сохраняет авторитет или ссылочный вес страницы-донора и передаёт его на страницу-акцептор.
Страница-донор — ресурс, с которого перенаправляются пользователи.
Страница-акцептор — веб-страница, на которую направляются пользователи.
Получается, что с помощью редиректов владелец сайта направляет пользователей с неактуальных страниц на актуальные. Вот несколько примеров использования редиректов:
- Редирект с http на https (как в примере выше).
- Перенаправление с URL с www на URL без www и наоборот. Например, при переходе с https://www.vc.ru браузер перенаправляет посетителя на https://vc.ru/. Дело в том, что с точки зрения поисковых систем www.site.ru и site.ru — разные URL адреса, и если сайт будет доступен с кодом ответа 200 по обеим ссылкам, то они будут считаться дублями. Это касается и редиректов через «/», как в примере выше.
Код ответа 200 — один из типов кодов HTTP, информирует пользователя об успешной обработке запроса.
- Переезд сайта на другой домен, если владельцам сайтов не хочется потерять позиции сайта в поисковых системах и постоянных посетителей.
- Перенаправление трафика с одной страницы сайта на другую. Например, если в интернет-магазине нет какого-то товара, то вы можете перенаправить трафик на страницу похожего продукта.
- Перенаправление пользователей на мобильную версию сайта, к примеру с www.vk.com на www.m.vk.com.
Виды перенаправлений
Браузеры и роботы поисковых систем определяют вид редиректа по коду состояния HTTP. Перенаправления могут иметь разный HTTP-статус: 301, 302, 303, 307. Давайте рассмотрим каждый вид подробнее.
Редирект 301
Это самый распространённый вид перенаправления. Его можно сравнить с постоянным переездом — когда вы уезжаете из одного дома в другой и точно не вернётесь назад.
Получается, что HTTP-статус 301 (Moved Permanently) означает, что веб-страница навсегда перемещена с запрошенного URL на новый. После получения ответа 301 браузер делает новый запрос и быстро перенаправляет пользователя на актуальную страницу.
Поисковые системы хорошо реагируют на 301-й редирект, да и сложностей обычно не возникает. Но важно всё правильно настроить, чтобы пользователь при переходе не получил ошибку 404.
Редирект 302
Этот редирект 302 (Moved Temporarily) можно назвать «временным». Возвращаясь к предыдущему примеру с переездом в новый дом, этот вид можно сравнить, например, поездкой на дачу на летние каникулы — ваша квартира в городе никуда не денется, и вы сможете вернуться туда в любой момент.
К такому виду часто прибегают владельцы интернет-магазинов, чтобы перенаправить потенциальных покупателей со страницы с товаром, который закончился, на позицию с аналогичными характеристиками.
Важно — редирект 302 не передаёт авторитет и ссылочный вес донора акцептору. Для поисковых систем это означает полное дублирование страниц, а потому одна из них (чаще всего старая) будет исключена из выдачи (кстати, как и в случае с 301).
Редиректы 303 и 307
307-й (Temporary Redirect) для поисковых систем фактически точная реплика (копия) 303-го (Found) редиректа. Это временное перенаправление трафика на новую страницу с сохранением всех параметров прежней.
Эти виды используют, когда появляется необходимость перенаправить пользователя на другую страницу, которая не содержит точного ответа, но является частичной заменой запрошенной.
В большинстве случаев владельцам сайтов подходит редирект 301. Именно этот вид уведомляет поисковых роботов, что документ навсегда перемещён на новый адрес, что передаёт авторитет и ссылочный вес новой странице.
Типы редиректов
Итак, виды редиректов отличаются друг от друга по своему функционалу. Но, существует и второй фактор для их классификации — техническое исполнение редиректа. По нему выделяются такие варианты:
Htaccess-редирект
Htaccess — системный файл, который принадлежит к корневой структуре сайта. Чтобы получить к нему доступ необходимо зайти в панель управления хостинга, на котором размещён нужный веб-ресурс. Для настройки любого вида необходимо разместить в нём строку с соответствующим кодом.
Чтобы настроить этот тип редиректа, вам нужно перейти в каталог сайта и открыть файл .htaccess или создать его, если он не существует. Далее добавить в файл необходимые строки:
- old-site.ru — домен, с которого происходит редирект;
- new-site.ru — домен, на который происходит редирект.
Ещё больше полезных материалов про редирект через .htaccess вы найдёте здесь.
PHP-редиректы
Отличается от вышеописанного тем, что находится на уровне сервера, но со схожим процессом настройки. Вам нужно найти в корневой папке сайта PHP-файл и вписать в него строку кода для соответствующего редиректа.
Этот тип работает медленнее, чем htacces, но, если у вас сотни страниц для которых нужно настроить редиректы и сделать это нужно выборочно, а не для всех подряд, именно PHP может стать оптимальным вариантом.
Подробную инструкцию о том, как сделать PHP-редирект вы можете найти в нашей Базе знаний.
JavaScript-редирект
Отличается от предыдущих тем, что перенаправление происходит на стороне браузера, а не на стороне сервера. Поэтому скорость переадресации резко снижается, так как скрипту необходимо полностью загрузиться для выполнения действий.
Когда же его использовать? Например, при переезде на новый сайт, чтобы вывести на экран сообщение типа «сейчас вы будете автоматически переадресованы на наш новый сайт».
Настраивать JavaScript-редирект нужно в исходном коде страницы, с которой осуществляется перенаправление, изменив его текст между тегами — .
HTML-редирект
Ещё один медленный тип, так как он работает в браузере, а не на сервере. Для его настройки в исходный код страницы, с которой выполняется переадресация, нужно добавить метатег refresh.
В большинстве случаев серверные редиректы предпочтительнее браузерных, так как они обладают более высокой скоростью загрузки и не зависят от настроек на стороне пользователя.
Сервисы для генерации кода редиректа
Если у вас не получается изменить код самостоятельно, не отчаивайтесь: существует множество специальных сервисов для генерации кода, и вот некоторые из них:
А если вам ну совсем не хочется копаться в коде, то закажите услугу «Переадресация домена», в которой сотрудники REG.RU сделают всё за вас! Услуга станет незаменимым инструментом для предпринимателей, которые хотят получить максимум пользы и прибыли со всех своих доменов и всего от 120 рублей в год.
Как проверить редирект страницы?
Самый очевидный способ — самостоятельно проверить перенаправление в браузере. Перед проверкой не забудьте очистить кэш. Также можно зайти в браузер в режиме инкогнито и проверить работу страницы.
Ещё можно использовать и специальные сервисы, которые помогут избежать этих «заморочек», например:
Настройка редиректа — важный навык для веб-мастера. Надеемся, что наша статья окажется полезной всем, кто впервые столкнулся с этой темой. Ну а для тех, кто не хочет погружаться в этот вопрос, есть специальные услуги, такие как «Переадресация домена» от REG.RU. ;).
А если у вас остались вопросы по теме — обязательно оставляйте их в комментариях.
Источник
Разбираем все виды редиректов (html, js, php, htaccess)
Содержание:
Примеры редиректов или же перенаправлений на другую страницу.
Редирект в HTML
Редирект в JavaScript
Метод replace() позволяет заменить одну страницу другой таким образом, что это замещение не будет отражено в истории просмотра HTML-страниц (history) браузера
Метод reload() полностью моделирует поведение браузера при нажатии на кнопку reload в панели инструментов. Если вызывать метод без аргумента или указать его равным true , то браузер проверит время последней модификации документа и загрузит его либо из кеша (если документ не был модифицирован), либо с сервера. Такое поведение соответствует нажатию на кнопку reload . Если в качестве аргумента указать false , то браузер перезагрузит текущий документ с сервера. Такое поведение соответствует одновременному нажатию на reload и кнопки клавиатуры shift (reload+shift) .
Следующие примеры тоже перенаправят на google:
С помощью функции setTimeout возможно реализовать задержку переадресации перед выполнением редиректа (в примере — 5 секунд):
Простой пример редиректа с таймером:
Редирект в PHP
В php есть функция header() , которая разрешает не только подменять стандартные заголовки, но и добавлять новые.
Редирект HTML в PHP:
Второй вариант, аналогичный по смыслу, но может быть полезным, если установка кода и редирект должны осуществляться в разных местах:
Первая строка указывает код http, а вторая, собственно, задает адрес. В большинстве случаев, проблем не возникнет. Однако, если у вас используется режим FastCGI , то вместо «HTTP/1.1 301 Moved Permanently» может потребоваться написать «Status: 301 Moved Permanently» .
Редирект в .htaccess (RewriteEngine)
Необязательный параметр status — это три цифры — код редиректа (например, 301). Если не указан, то по умолчанию подставляется 302.
URL-path — часть запрашиваемого пользователем (или поисковиком) адреса, которая должна обязательно начинаться со слеша (/)
URL-to-redirect — полный адрес сайта (и, возможно, часть пути), на который будет осуществляться редирект. Должен быть вида http://site.ru/ — то есть обязательно должен присутствовать протокол (http://) и закрывающий адрес сайта слеш (/).
Если URL-path заканчивается не слешем, то редирект будет срабатывать только в случае точного совпадения запрошенного пользователем адреса и URL-path .
Если URL-path заканчивается слешем, то редирект сработает не только для указанного адреса, но и для всех, которые начинаются на указанный. А к URL-to-redirect будет добавлена часть адреса, следующая за последним указанным слешем в URL-path .
Действие директивы RedirectMatch аналогично Redirect , но в параметрах URL-regexp и URL-to-redirect можно использовать регулярные выражения.
У директивы RewriteRule более широкий спектр применения. Который, в числе прочих возможностей, разрешает ее использования и для редиректа — с указанием в конце строки в квадратных скобках [ ] флагов L (выполнить немедленно) и R (редирект).
Источник
Как исправить ошибку Слишком много перенаправлений в браузере
Если вы видите ошибку Слишком много перенаправлений (ERR_TOO_MANY_REDIRECTS) в своем веб-браузере, значит что-то пошло не так. Также эта ошибка сопровождается сообщением Эта веб-страница имеет цикл перенаправления (This webpage has a redirect loop) и она блокирует загрузку сайта.
Ошибка Слишком много перенаправлений означает, что сайт продолжает циклично перенаправляться между разными адресами и это может никогда не прекратиться. Ваш браузер защищает вас от этого, разрешая только определенное количество перенаправлений (часто около десяти), прежде чем он «устанет» от этого и не выдаст данную ошибку.
Ошибка о цикличных перенаправлениях по-разному проявляется в разных браузерах:
Эта страница не работает (This page isn’t working)
перенаправил вас слишком много раз. ( redirected you too many times. )
Или
Эта веб-страница имеет цикл перенаправления (This webpage has a redirect loop)
Попробуйте очистить ваши куки. (Try clearing your cookies.)
ERR_TOO_MANY_REDIRECTS
Google Chrome
Страница не перенаправляет должным образом (The page isn’t redirecting properly).
Произошла ошибка при подключении к. Эта проблема иногда может быть вызвана отключением или отказом принимать куки. (An error occured during a connection to . This problem can sometimes be caused by disabling or refusing to accept cookies. )
Mozilla Firefox
Safari не может открыть страницу (Safari Can’t Open the Page).
При попытке открытьпроизошло слишком много перенаправлений. Это может произойти, если вы открываете страницу, которая перенаправляется на другую страницу, которая затем перенаправляется на исходную страницу. (Too many redirects occurred trying to open . This might occur if you open a page that is redirected to open another page which is then redirected to open the original page.)
Safari
Очень часто это является результатом конфликтных перенаправлений, одно из которых пытается принудительно установить HTTPS (SSL) соединение, а другое – обратно HTTP (не-SSL), или между URL-адресами с www и без www.
Для таких CMS, как WordPress или Magento, это решается приведением к общему конфигурации base_url или URL-адреса сайта в коде или базе данных с перенаправлением в файле .htaccess.
Как определить причину цикличного перенаправления
Вы можете следить за всеми перенаправлениями с помощью инструментов разработчика в браузере Firefox или Chrome. Эти инструменты обычно открываются нажатием клавиши F12 (или Ctrl+Shift+I ). Откройте Сеть (Network), а затем перезагрузите страницу, на которой у вас возникла проблема.
После перезагрузки страницы вы увидите список перенаправлений. Проанализировав результаты, вы сможете найти «виновника» (если срабатывает перенаправление на одну и ту же страницу).
Основные типы перенаправления (код ответа состояния HTTP):
- 301 редирект (постоянное перенаправление) – означает, что страница или элемент перемещен на постоянной основе, и браузер должен искать его в новом месте. Чаще всего записываются в файле .htaccess .
- 302 перенаправление или редирект – это временное перенаправление, которое означает, что страница или элемент перемещен временно, и его адрес в будущем может измениться. Чаще всего записываются в коде веб-сайта.
Как исправить ошибку перенаправлений (редиректов)
Шаг №1: Очистить кэш и куки браузера
Очень часто циклические перенаправления могут вызываться файлами cookie в браузере, в которых закэшированы старые редиректы. Данные браузера, такие как история просмотров, кэш, файлы cookie и т.д., могут содержать ошибочные данные, которые вызывают ошибку ERR_TOO_MANY_REDIRECTS . Очистка этих данных – эффективный способ исправить ошибку. Чтобы очистить данные просмотра:
- В Google Chrome нажмите Ctrl+Shift+Delete , выберите необходимые данные, время жизни данных и нажмите Очистить данные (clear data)
- В Mozilla Firefox нажмите кнопку «Меню» и выберите «Параметры». Выберите Конфиденциальность, а затем очистить свою недавнюю историю (clear your recent history). Выберите Everything для диапазона времени, а затем нажмите Очистить сейчас (Clear Now).
После очистки данных браузера вы можете попробовать зайти на сайт и посмотреть, исчезла ли ошибка.
Шаг №2: Попробовать в других браузерах
Ошибка ERR_TOO_MANY_REDIRECTS может возникать только в браузере, который вы используете. Вы можете попробовать открыть тот же URL в другом браузере. Если ошибка не устраняется, значит проблема может возникать на стороне сервера.
Правильные настройки редиректов (перенаправлений)
Как мы уже упоминали выше, причиной ошибки могут быть неправильные настройки на вашем сайте. В основном, они касаются настроек редиректов в файле .htaccess. Данный файл – это файл конфигурации, который используется для изменения поведения сервера Apache для каждой папки на сайте или сервере. С его помощью можно редактировать только некоторые конфигурации Apache, хотя перенаправления обычно разрешается редактировать.
У вас может быть несколько файлов .htaccess , которые каскадно влияют на каталоги. Если у вас есть один .htaccess в родительском каталоге, и другой в подкаталоге, они оба будут влиять на этот подкаталог. Т.е., это может быть причиной конфликта между этими файлами на разных уровнях.
Ниже приведен ряд примеров перенаправления (редиректов) в файле .htaccess , которые обычно используются на сайтах.
Принудительный HTTPS
Приведенный ниже код сначала проверяет, поступил ли запрос на сервер с использованием HTTP или HTTPS. Если в запросе не использовался HTTPS, то конфигурация скажет браузеру перенаправить на HTTPS-версию того же веб-сайта и URL-адреса, которые были запрошены ранее:
Принудительный HTTPS при использовании прокси-сервера
Вы можете использовать прокси-сервер, например, балансировщик нагрузки или веб-брандмауэр, для которого можно настроить использование SSL (HTTPS) на внешнем интерфейсе, но не на внутреннем. Чтобы это работало правильно, вам нужно проверять не только HTTPS в запросе, но и проверять, передал ли прокси-сервер исходный HTTPS-запрос на сервер, используя только HTTP. Код ниже проверяет, был ли запрос перенаправлен с HTTPS, и, если это так, не пытается дополнительно его перенаправлять:
Перенаправление с HTTP на HTTPS в Nginx
Если на вашем веб-сервере работает Nginx, вы можете легко перенаправить весь ваш HTTP-трафик на HTTPS, добавив следующий код в файл конфигурации Nginx:
Замените domain.com на свой домен.
Принудительно без www
Следующий код в файле .htaccess проверяет, был ли запрошен сайт с www в начале доменного имени. Если www есть в URL, тогда он переписывает запрос и говорит браузеру перенаправить на доменное имя без www:
Принудительно с www
Этот код в файле .htaccess проверяет, не было ли запрошено имя сайта с www в начале доменного имени. Если www не включен в URL, тогда он переписывает запрос и говорит браузеру перенаправить на www-версию домена:
Краткий итог
Если на вашем сайте есть редирект в файле .htaccess , что перенаправляет на URL, который не совпадает с тем, что находится в базе данных, вы можете получить ошибку в браузере о бесконечном цикле перенаправления ( ERR_TOO_MANY_REDIRECTS ), как описано выше.
Однако теперь вы знаете, как выглядят некоторые распространенные перенаправления в .htaccess . Также, с помощью данной статьи, вы сможете сами протестировать, найти причину ошибки, а также устранить ее самостоятельно.
Источник