В материале ниже я опишу шесть способов как сделать редирект страницы. Не сомневаюсь, что уже многие слышали о таком понятии как редирект, и примерно знают для чего он нужен. Но как его правильно сделать знают не все. Данный материал не представляет собой исчерпывающий набор редиректов — это всего лишь несколько наиболее популярных видов и способов редиректа.
Содержание статьи
Что такое редирект
Для чего нужен редирект? Основная функция для перенаправление посетителей с одного сайта на другой (с одной страницы на другую).
Причиной этому могут служить разные обстоятельства, например смена раскрученного домена, арбитраж трафика, работа с партнерскими программами.
Суть работы редиректа следующая — пользователь набирает один адрес сайта, нажимает ENTER, и попадает на совершенно другой сайт.
Давайте рассмотрим следующие виды редиректа:
- header-редирект средствами PHP — 301, 302-й редирект (разница между ними).
- Редирект средствами .htaccess (и модуля mod_rewrite, который используется при этом).
- Простейший JavaScript — редирект с помощью doсument.location
- META-REFRESH — редирект с помощью meta-тэгов
- JavaScript-редирект с задержкой через setTimeout (например для учёта Метрикой).
- 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 > 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 > <!-- setTimeout ('window.location = «//leonov-do.ru/»;', 300); //--> </script> |
В данном случае код сработает через 300 миллисекунд (1000 = 1 секунда). Не очень удобно может быть и для посетителя, но если нужен учёт метрикой (и не используются цели на предыдущей страничке на клик по кнопке и т.п.) — это тоже вариант.
Способ 6. Псевдоредирект через IFRAME или FRAMESET.
Почему псевдоредирект? Потому что по факту редиректа не происходит, а просто в фрейме грузится нужная страничка.
Даже если растянуто на всю страничку, а основная страница не содержит кода или содержит минимальный код (например, Метрика или счётчик).
Как правило, такой редирект, не детектируется рекламными сетями, которые не пропускают редиректные ссылки (например Яндекс.Директ), а в URL-строке видно только адрес оригинальной странички с кодом, а не той что грузится во фрейме.
Вариант А — через FRAMESET:
<html> |
— в этом случае нельзя разместить другой код (метрику, счётчики и т.п.) на самой страничке, т.к. он все равно не выполнится
Вариант B — через IFRAME:
<html> <head> <title>Заголовок странички</title></head> <body style="margin: 0; padding: 0; overflow: hidden;"> <iframe src="//yandex.ru/" height="100%" width="100%" frameborder="0" scrolling="yes"></iframe> Здесь можно код метрики поставить </body></html> |
Этот вариант уже лучше (хотя некоторые антивирусы могут блокировать iframe, но скорее всего только невидимый iframe, а в данном случае видимый) — так как можно разместить код счётчика или метрики рядом для определения статистики.
Я думаю довольно подробно поведал о всех редиректах, и всем стало более менее понятно как сделать редирект.
Здравствуйте.
Возможен ли такой вариант: на сайте1 поставить редирект в htaccess на сайт2 так, чтоб потом отследить в метрике или аналитиксе сайта2 трафик идущий с поисковых систем на сайт1 переходящий по редиректу на сайт2 (именно с ПС с сайта1, а не прямые заходы на сайт1)?
Добрый день, как-то у вас запутанно получается, а зачем так надо делать?
делай через подставную страницу с сайт1 редирект на сайта1/primer.php и c сайт1/primer.php на сайт2. в метрику отслежка по странице сайт1/primer.php либо по цели собираешь либо на общий счетчик смотря что надо сделать
Здравствуйте!
В некоторых партнерках запрещена реклама на сайт партнерки. Поможет-ли в этом случае редирект? Можно-ли сделать редирект через 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 где я нахожусь, помог мне решить проблему редиректа с поддоменами, я тоже долго мучался.
А как сделать редирект с одной страницы на другуювнутри сайта? Это нужно из-за переименования страницы. Научите, пожалуйста.
Ваш сайт на какой платформе?
Вы даете скрипты, а скопировать не даете. Зачем тогда эта статья???
Пожалуйста копируйте. Отключил функцию запрета
Подскажите как сделать редирект всех страниц автоматически.Хочу поменять ссылки с датами и названием, на ссылки без дат,а просто с названием.Как это всё автоматизировать?