Как сделать редирект? 6 способов редиректа

Как сделать редирект страницы

В материале ниже я опишу шесть способов как сделать редирект страницы. 

Не сомневаюсь, что уже многие слышали о таком понятии как редирект, и примерно знают для чего он нужен. Но как его правильно сделать знают не все. 

Данный материал не представляет собой исчерпывающий набор редиректов — это всего лишь несколько наиболее популярных видов и способов редиректа.

Для чего нужен редирект? Основная функция для перенаправление посетителей с одного сайта на другой (с одной страницы на другую).

Причиной этому могут служить разные обстоятельства, например смена раскрученного домена, арбитраж трафика, работа с партнерскими программами.

Суть работы редиректа следующая — пользователь набирает один адрес сайта, нажимает ENTER, и попадает на совершенно другой сайт.

Давайте рассмотрим следующие виды редиректа:

  1. header-редирект средствами PHP — 301, 302-й редирект (разница между ними).
  2. Редирект средствами .htaccess (и модуля mod_rewrite, который используется при этом).
  3. Простейший JavaScript — редирект с помощью doсument.location
  4. META-REFRESH — редирект с помощью meta-тэгов
  5. JavaScript-редирект с задержкой через setTimeout (например для учёта Метрикой).
  6. Iframe/Frameset — «псевдо» редирект через фреймы (например для прохождения модерации в Яндекс.Директе).

как сделать редирект страницы
Редирект — перенаправление

Как сделать редирект страницы. Способ 1 — PHP-редирект.

Этот редирект срабатывает без загрузки странички.
Страничка на которую идёт редирект — получает оригинальный REFERER (т.е. таким образом не скрыть откуда был редирект).

Данный редирект например можно использовать для Ютуба. Ютуб как известно можно связать только с одним сайтом, соответственно на чужой сайт вы не сможете сделать ссылку. Для обхода этого ограничения создаете отдельный подкаталог на своем домене, в него кладете index.phd с прописанным кодом редиректа.

Рекомендую прочитать мою статью YouTube — инструмент для заработка в интернете, в которой я подробно прошелся о преимуществах использования Ютуба.

Редирект нужно оформлять в файл.php и ОБЯЗАТЕЛЬНО до вывода любых символов. То есть если будет лишний пробел или символ, который выводится на экран (например до знака <?) — то редирект не сработает. Любой вывод на такой страничке (коды метрики и т.п.) не сработают после редиректа, а если написать до редиректа — не сработает редирект.

Как писать редирект, пример, — файл index.php:

<?php
header («Location: //leonov-do.ru/»);
?>

301 и 302 редирект особой разницы не имеют для арбитражника (обычно в SEO больше) — но некоторые рекламные сети принципиально пропускают только один из редиректов. Технически 301 обозначает временный редирект, а 302 — постоянный редирект. Указать можно третьим параметром функции код редиректа, например 302 (второй должен быть true, параметры идут через запятую):

<?php
header («Location: //leonov-do.ru/», TRUE, 302);
?>

Способ 2. htaccess-редирект

Этот редирект делается простым помещением файла .htaccess в папку где нужно сделать редирект.

Например, редирект любого url (из папки где .htaccess) на нужный адрес, вот содержимое .htaccess:

RewriteEngine On
RewriteRule (.*) //leonov-do.ru/

Возможны более сложные редиректы, но такой вариант по своей сути — такой же как и header-редирект (если указывается внешний URL). Возможны вариант переадресации файла — вместо (.*) указать к примеру имя go — будет редиректить адрес go и т.п. Можно указать в одном файле несколько строчек RewriteRule подряд с разными правилами — тогда не нужно писать каждый раз RewriteEngine On.

Способ 3. Простейший javascript-редирект.

Разница этого редиректа в том — что сначала в браузер загружается страничка HTML — потом после её загрузки происходит редирект. Может ощущаться некоторая задержка с появлением «белого экрана» в момент редиректа — в этом небольшой минус перед header-редиректом. Не сработает на компьютерах/браузерах, где отключен javascript. Соответственно REFERER виден именно тот, где был код редиректа (т.е. сама страничка с кодом будет как источник перехода).

Оформляется так (в секции <body> или <head>):

<script type="text/javascript">
document.location = '//leonov-do.ru/';
</script>

Если на страничке установлен код Яндекс.Метрики — он скорее всего не успеет сработать и засчитать посетителя, т.к. подобный редирект срабатывает быстрее метрики.

Способ 4. META-refresh-редирект.

Считается одним из наименее надёжных редиректов, но тоже используется, особенно там где нельзя вставить Javascript-код. Также срабатывает уже только после загрузки странички, как и javascript-редирект.

Код нужно вставлять в секцию <head></head> HTML-странички:

<META HTTP-EQUIV=REFRESH CONTENT="1; URL=//leonov-do.ru/">

Также делается с задержкой. Можно попробовать менять значение задержки (вместо цифры 1 — указать другое время, 0, 5 секунд и т.п.)
В основном этот вариант не рекомендуется к использованию.

Способ 5. Javascript-редирект с задержкой.

Этот вариант больше подходит если нужно сначала выполнить какой-то Javascript-код (например Метрики и т.п.) — а потом редиректить. 

Не слишком надёжный способ выполнения задержки, т.к. у всех на компьютерах скорость выполнения Javascript может быть разной, но это лучше чем ничего. Т.е. можно рядом поставить код метрики и к примеру задержку в 300 миллисекунд — код Метрики скорее всего успеет выполниться и потом будет редирект. 

Таким образом, можно пробовать использовать и этот редирект для учёта достижения целей в метрике например и др.

<script type="text/javascript">
<!--
setTimeout ('window.location = «//leonov-do.ru/»;', 300);
//-->
</script>

В данном случае код сработает через 300 миллисекунд (1000 = 1 секунда). Не очень удобно может быть и для посетителя, но если нужен учёт метрикой (и не используются цели на предыдущей страничке на клик по кнопке и т.п.) — это тоже вариант.

Способ 6. Псевдоредирект через IFRAME или FRAMESET.

Почему псевдоредирект? Потому что по факту редиректа не происходит, а просто в фрейме грузится нужная страничка. 

Даже если растянуто на всю страничку, а основная страница не содержит кода или содержит минимальный код (например, Метрика или счётчик).

Как правило, такой редирект, не детектируется рекламными сетями, которые не пропускают редиректные ссылки (например Яндекс.Директ), а в URL-строке видно только адрес оригинальной странички с кодом, а не той что грузится во фрейме.

Вариант А — через FRAMESET:

<html>
<head>
<title>Заголовок странички</title>
</head>
<frameset cols="100%">
<frame src="//leonov-do.ru/">
<noframes>Ваш браузер не поддерживает отображение фреймов</noframes>
</frameset>
</html>

— в этом случае нельзя разместить другой код (метрику, счётчики и т.п.) на самой страничке, т.к. он все равно не выполнится

Вариант B — через IFRAME:

<html>
<head>
<title>Заголовок странички</title>

</head>
<body style="margin: 0; padding: 0; overflow: hidden;">
<iframe src="http://yandex.ru/" height="100%" width="100%" frameborder="0" scrolling="yes"></iframe>

Здесь можно код метрики поставить

</body>
</html>

Этот вариант уже лучше (хотя некоторые антивирусы могут блокировать iframe, но скорее всего только невидимый iframe, а в данном случае видимый) — так как можно разместить код счётчика или метрики рядом для определения статистики.

Я думаю довольно подробно поведал о всех редиректах, и всем стало более менее понятно как сделать редирект.


P.S. Обратите внимание на страницу РЕКОМЕНДУЮ, где Вы найдете качественные бесплатные курсы по блоговедению и заработку в интернет.
Жду Ваших комментариев. Подписывайтесь на обновления блога. Дмитрий Леонов | leonov-do.ru 
 

Рекомендую прочитать похожие статьи:

Новости блога Получай обновления первым!



Согласен (-на) с политикой конфиденциальности и обработки персональных данных
  • ответить Сергей ,

    Здравствуйте.

    Возможен ли такой вариант: на сайте1 поставить редирект в htaccess на сайт2 так, чтоб потом отследить в метрике или аналитиксе сайта2 трафик идущий с поисковых систем на сайт1 переходящий по редиректу на сайт2 (именно с ПС с сайта1, а не прямые заходы на сайт1)?

    • ответить Леонов Дмитрий ,

      Добрый день, как-то у вас запутанно получается, а зачем так надо делать?

    • ответить Александр ,

      Здравствуйте!

      В некоторых партнерках запрещена реклама на сайт партнерки. Поможет-ли в этом случае редирект? Можно-ли сделать редирект через IFRAME с задержкой если хочется, чтобы посетитель увидел сначала какое-то вводное слово?

      • ответить Серега ,

        Добрый день!

        Как сделать редирект с задержкой и еще переменную в GET добавить (javascript)?

        • ответить Леонов Дмитрий ,

          meta http-equiv="refresh" content="seconds;URL-to-redirect"

          Первый параметр seconds — это количество секунд (после полной загрузки страницы), по истечении которых произойдет редирект на второй параметр URL-to-redirect.

        • ответить Иван ,

          Подскажите, как сделать PHP iFrame редиректор?

          • ответить Леонов Дмитрий ,

            Иван не совсем понял ваш вопрос...

          • ответить Александр ,

            Здравствуйте Дмитрий.

            Пытаюсь решить следующую задачу с помощью .htaccess но не получается.

            У меня есть сайт, на котором есть страница с инструкциями на газовые колонки в pdf.

            Некоторые вэбмастера сделали клоны этой страницы и стали загружать инструкции с моего хостинга.

            Для исключения этого я в папке с файлами инструкций разместил файл .htaccess со следующим содержанием:

            RewriteEngine on

            RewriteCond %{HTTP_REFERER} !^$

            RewriteCond %{HTTP_REFERER} !^http (s)?://(www\.)?ydoma.info [NC]

            RewriteRule \.(pdf)$ — [NC,F,L]

            Хотелось что бы, вместо ошибки закружилась заглушка-картинка, но этого не происходит, хотя в .htaccess прописывал:

            RewriteEngine on

            RewriteCond %{HTTP_REFERER} !^$

            RewriteCond %{HTTP_REFERER} !^http (s)?://(www\.)?ydoma.info [NC]

            RewriteRule \.( pdf)$ ydoma.info/zaglushka.png [R,NC]

            В идеале хотелось, чтобы происходил редирект на старину моего сайта с инструкциями.

            Что посоветуете?

            • ответить Леонов Дмитрий ,

              Добрый день Александр, интересная у Вас задача...Я с ходу не знаю как решить, попробуйте обратиться в тех поддержку Вашего хостинга. Например Timeweb где я нахожусь, помог мне решить проблему редиректа с поддоменами, я тоже долго мучался.

            • ответить Алексей ,

              А как сделать редирект с одной страницы на другуювнутри сайта? Это нужно из-за переименования страницы. Научите, пожалуйста.

              • ответить Леонов Дмитрий ,

                Ваш сайт на какой платформе?

              Оставить комментарий

              • Индекс цитирования