Как в php реализовать переход на другую страницу?
Содержание:
- Способ 3. Простейший javascript-редирект.
- Перенаправление через mod_alias
- Пример использования 301-го и 302-го кодов
- Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
- Генератор редиректов
- Как установить редирект на новый домен
- Другие способы создания переадресации 301
- Как проверить через Netpeak Spider:
- Редирект для SEO
- Синтаксис и символы
- Настройка 301-й переадресации
- Важные рекомендации по редиректу
- Как убрать редирект через панель управления сервера
- Что такое редирект
- Альтернативные методы переадресации
- Использование функции PHP header() для редиректа URL-адреса
- Цепочки редиректов
- Canonical против 301-й переадресации
Способ 3. Простейший javascript-редирект.
Разница этого редиректа в том — что сначала в браузер загружается страничка HTML — потом после её загрузки происходит редирект. Может ощущаться некоторая задержка с появлением «белого экрана» в момент редиректа — в этом небольшой минус перед header-редиректом. Не сработает на компьютерах/браузерах, где отключен javascript. Соответственно REFERER виден именно тот, где был код редиректа (т.е. сама страничка с кодом будет как источник перехода).
Оформляется так (в секции <body> или <head>):
<script > document.location = ‘//leonov-do.ru/’; </script> |
Если на страничке установлен код Яндекс.Метрики — он скорее всего не успеет сработать и засчитать посетителя, т.к. подобный редирект срабатывает быстрее метрики.
Перенаправление через mod_alias
Эти примеры показывают, как перенаправить из одного места в другое с помощью модуля псевдонимов Apache . Кроме того, вы можете изменить код состояния на любой другой (например, изменить с 301 на 302).
Перенаправить страницу в том же домене
Redirect 301 /page.php /page.html
1 | Redirect301page.phppage.html |
Перенаправить страницу на другой домен
Redirect 301 /page.php https://example.com/page.html
1 | Redirect301page.php https//example.com/page.html |
Перенаправить весь сайт
Redirect 301 / https://example.com/
1 | Redirect301https//example.com/ |
Перенаправить весь сайт в подкаталог
Redirect 301 / https://example.com/subdirectory/
1 | Redirect301https//example.com/subdirectory/ |
Перенаправление из подкаталога на другой сайт
Redirect 301 /subdirectory https://example.com/
1 | Redirect301subdirectory https//example.com/ |
Перенаправление с .html на .php
RedirectMatch 301 (.*)\.html https://example.com/$1.php
1 | RedirectMatch301(.*)\.html https//example.com/$1.php |
Запретить доступ к странице
Redirect 403 /page.html
1 | Redirect403page.html |
Сообщите посетителям, что страница исчезла
Redirect 410 /page.html
1 | Redirect410page.html |
Пример использования 301-го и 302-го кодов
Если стоит выбор между постоянным и временным редиректами, лучше отдать предпочтение первому варианту. Временная переадресация может проводиться только в двух случаях:
- когда некритично, будет новая страница индексироваться или нет;
- при наличии по старому адресу ссылок, индексацию которых нужно сохранить.
Если сделать временную переадресацию, для поисковых систем это будет значить, что по прежнему адресу проводится техобслуживание и нужно сохранить ее в результатах выдачи. Для наглядности посмотрим, как это работает, на примере. Допустим, изменилась доменная зона сайта, а после этого адрес дополнился еще и https (протоколом защиты). Но разработчики вместо постоянной переадресации сделали временную и получили такую картину в выдаче Google.
Пример временной переадресации в Google
Результат временного редиректа в Google
Результатом использования кода 302 стало появление в индексе поисковиков сразу трех экземпляров одного сайта. Это привело к потере позиций в выдаче и серьезному проседанию.
Пример ошибки временной переадресации
Ошибка 302 редиректа
После исправления ошибки поисковые роботы удалили ненужные страницы из выдачи, и таким образом дубли были склеены. Как результат, сайт опять вышел в лидеры.
Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1/
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)$ http://%1/$1/
Генератор редиректов
В завершении нудного теоретического блока приведу генератор редиректа, который позволит без ошибок сгенерировать код для нужного вам типа редиректа. Хотя, для тех, кто внимательно читал, все и так предельно понятно)
На самом деле, инструментов на этот случай великое множество (в том числе – плагины для CMS). Так как все они делают они одно и то же, приведу только один пример: 301 Redirect Code Generator
301 Redirect Code Generator – онлайн генератор кода редиректа
Пожалуй, дополнительные комментарии тут излишни: просто вводите адрес страницы-донора (опционально), страницы-акцептора, выбираете подходящий тип редиректа, жмете кнопку “Generate Code” и будет вам счастье)
Как установить редирект на новый домен
Такая проблема решается все через тот же .htaccess. Вбиваем в текст файла такой код.
Меняем домен oldsite.ru на имя своего старого портала, а newsite.ru – на свой новый ресурс. Все очень просто, правда?
Для настройки переадресации нам потребовалось всего 5 минут! Но можно сделать все еще быстрее.
Если вам доступен редактор DNS, можно осуществить перенаправление через dns.
Для этого достаточно указать запись CNAME для имени сайта и его субдоменов. Допустим, если вам понадобилось настроить редирект на сайт int-net-partner.ru, пишем следующее.
Если нужно перенаправить только субдомен, пишем такой код:
Для редикерта со всех субдоменов вашего портала, используем астрикс:
Вы, наверное, уже почувствовали себя хакером, мастерски управляющим компьютерными шифрами. Нет?
Тогда спешу вас обрадовать: перенаправление на другой сайт можно осуществить через программу управления хостингом. Просто запускаем панель управления на сайте хостинга или в специальном софте и выбираем функцию перенаправления. Потом записываем в строку адрес нашего нового (или хорошо забытого старого) проекта и «Вуаля»!
Такое решение больше всего подходит для тех, кто не хочет заморачиваться с кодом (а это, по секрету сказать, почти все).
Помните, что показатели Google PageRank перейдут на новый сайт только через пару месяцев после того, как мы все настроим. Это особенности поисковой машины, и с этим ничего не поделаешь.
Я постарался изложить решение проблемы очень бегло, но думаю, что информация в этой статье все таки понадобится тем, кто захочет «переехать» на другой сайт. Если вам что-то непонятно, напишите это в комментарии под статьей, и я обязательно отвечу. Не забываем подписываться на новости и рекомендовать мой блог своим друзьям.
До новых встреч!
P/S
Анекдот в тему:
— Слушай, а давай переедем!
— Конечно, давай, только кого?
Рекомендую прочесть следующие полезные статьи:
1. На какие виды делятся домены?
2. Как продать сайт с доменом?
3. Как переоформить домен на другого человека?
Другие способы создания переадресации 301
Через PHP
Данный вариант подойдет тем, кто хорошо разбирается в web-программировании и PHP. Необходимо открыть файл index.php в корне CMS-движка и прописать там:
if($_SERVER == "/index.php") { header("Location: /",TRUE,301); exit(); }
(в первой строке укажите старый url, а во второй — новый)
Второй способ — перенаправление при помощи отправки заголовков (скрипта):
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.newdomain.ru/newdir/newpage.htm"); exit(); ?>
ASP-редирект
<%@ Language=VBScript %> <% Response.Status="301 Moved Permanently" Response.AddHeader "Location", "http://www.new-url.com" response.end %>
ASP.NET редирект
Найдите в корне своего сайта файл web.config и вставьте в секцию синтаксис:
<script runat="server"> private void Page_Load(object sender, System.EventArgs e) { Response.Status = "301 Moved Permanently"; Response.AddHeader("Location","http://www.new-url.com"); } </script>
ColdFusion редирект
<.cfheader statuscode="301″ statustext="Moved permanently"> <.cfheader name="Location" value="http://www.new-url.com">
JSP (Java) редирект
Данный способ подойдет для небольшой корректировки простых сайтов. Код можно прописать лишь в одном файле, а сам файл добавить на все нужные страницы, указав:
<script type="text/javascript" src="redirect.js"></script> <script type="text/javascript"> location="https://yandex.ru"; </script>
HTML-редирект
Этот способ подойдет для небольших статических сайтов, когда требуется настроить переадресацию для одной страницы. Для этого необходимо добавить специальный мета-тег внутри кода HTML. Пример записи редиректа на другой ресурс после 5-секундной задержки:
<meta http-equiv="refresh" content="5;https://livepage.pro">
Если поставить значение 0 вместо 5, то переадресация на https://livepage.pro произойдет моментально.
Однако для больших сайтов HTML-перенаправление делать сложно и затратно по времени, поэтому лучше отдать предпочтение другому варианту.
Как проверить через Netpeak Spider:
- На боковой панели откройте вкладку «Параметры» и отметьте пункт «Код ответа сервера».
- Введите URL анализируемого сайта в адресную строку и запустите сканирование кнопкой «Старт».
- По завершению сканирования ознакомьтесь с результатами: в основной таблице вы сможете увидеть коды ответа, а на вкладке «Отчёты» → «Ошибки» на боковой панели отобразятся все, имеющиеся на сайте, ошибки, связанные с переадресацией.
- Если вам нужен список всех существующих на сайте редиректов, перейдите на вкладку «Отчёты» → «Сводка» и кликните по названию соответствующего типа страниц.
- Чтобы посмотреть источники, на которых поставлены ссылки с редиректами, воспользуйтесь сочетанием клавиш Shift + F1.
- Для экспорта полученных данных кликните по кнопке «Экспорт» в правом верхнем углу экрана, затем выберите одну из опций: «Результаты в текущей таблице» — чтобы выгрузить отфильтрованные результаты, либо один из специальных отчётов по редиректам.
- В программе также доступен отчёт, показывающий страницы, которые содержат ссылки на страницы с редиректом и конечным URL редиректа. Для выгрузки отчёта перейдите в меню «Экспорт» → «Специальные отчёты по ошибкам» → «Редиректы: входящие ссылки и конечные URL».
Редирект для SEO
Чтобы не потерять статистику предыдущего сайта, с которого производится редирект, часто владельцы веб-сайтов «склеивают» свои ресурсы в один в надежде увеличить свои показатели. Однако подобные действия могут привести к неправильной индексации ресурса веб-сайта. Не каждый редирект поможет Вам в продвижении своего сайта в поисковиках. К примеру, может случиться так, что пользователь перейдёт на правильный редирект и продолжит работу с сайтом, а вот робот-индексатор поисковика останется на предыдущей странице и проведёт анализ практически полупустой страницы с одним только редиректом, что никак не может сказаться положительно на статистике посещений.
Синтаксис и символы
- . — Точка означает любой символ.
- — перечень символов, совпадающих с буквами a, b, или с.
- — перечень символов, не входящих в диапазон. Условию соответствует любой символ, кроме a, b, с.
- * — предыдущий символ может повторяться 0 и более раз.
- * — найти символы из заданного набора идущие подряд.
- * — обратная операция.
- .* — замена любого набора символов. «.*» — найти все подстроки между кавычками.
- ^ — обознает начало строки (при использовании в начале выражения).
- $ — конец строки.
- \w — буква, цифра или подчёркивание _.
- \d — любая цифра.
- \D — любой символ, кроме цифр.
- — указание на любую цифру.
- — указание на любую букву от a до z с нижним регистром.
- — указание на любую букву от A до Z с верхним регистром.
- — любая буква от a до Z, регистр не важен.
- — тоже самое, только короче.
Флаги для доп. опций
- NC — NoCase отключает проверку регистра символов при срабатывании правила.
- R — Redirect останавливает изменение URL-адреса и возвращает результат. Самое популярное значение R=301, однако встречаются и другие для временных редиректов (302, MOVED TEMPORARY).
- L — Last останавливает создание URL-адреса и строка считается окончательной.
Настройка 301-й переадресации
Как настроить 301 редирект
Настройка 301 редиректа
Есть несколько способов проведения редиректа. Какой из них выбрать, зависит от движка сайта.
Через файл .htaccess (альтернатива для Арасhe – httpd.conf). Этот метод популярен из-за своей простоты. При его использовании в папке ресурса создается файл .htaccess. Если он там есть, нужно провести редактирование
При этом важно предварительно сохранить файл (или весь сайт) в исходном виде. Чтобы сделать постоянный редирект, открываем его и в начале прописываем команды, заменив адреса своими.
Переадресация сайта целиком:
Rеdіrесt / httр://novyi-saіt.соm/ – здесь указываем свой новый адрес сайта.
Удаление префикса WWW (переход на адрес без него):
1-я строка – кодовая комбинация – RеwrіtеЕngіnе оn;
2-я строка – RеwrіtуСоnd %{НТТР_НОSТ} ^www.рrіmеr\.соm – здесь указываем первоначальный адрес своего сайта;
3-я строка – RеwrіtеRulе ^(.*)$ httр://рrіmеr.соm/$1 – в этой строке url без префикса.
Перемещение на другую страницу:
Rеdіrесt 3О1 /strаnіса-1.html / strаnіса -2.html
Переход на НТТРS с НТТР:
1-я строка с кодом – RеwrіtеЕngіnе Оn
2-я строка – RеwrіtеСоnd %{НТТРS} оff
3-я строка – RеwrіtеRulе (.*) httрs://%{НТТР_НОSТ}%{RЕQUЕSТ_URI}
Важно учитывать реализацию команды на сервере с операционной системой Apachе и Linux с активацией модуля Mod_rewrite. Можно использовать файл конфигурации hpptd.conf
- При помощи специальных плагинов в CMS. Это также довольно простой способ переадресации. Если сайт построен на WordPress, для редиректа можно использовать Simple 3О1 Redirects, расширение, единственный минус которого заключается в необходимости составлять перечень адресов для перенаправления вручную.
- Через условие РНР. Этот способ подходит в том случае, если есть достаточный объем знаний о РНР и структуре интернет-проекта. Для его применения нужно для сайта на СМS открыть в корне движка index.php и вписать в этот файл:
іf($_SЕRVЕR == «/іndех.рhр») { здесь указывается старый адрес
hеаdеr(«Lоcаtіоn: /»,ТRUЕ,3О1); – в этой строке нужно указать новый url
ехіt()
}
Переадресацию РНР можно провести, отправив заголовки (скрипт):
<?рhр
hеаdеr(«НТТР/1.1 3О1 Mоvеd Реrmаnеntly»); -–команда постоянного редиректа
hеаdеr(«Lосаtіо: http://www. nоvyі-sаіt.соm/nоvаjа-рарса/novaia-stranica.htm»)
еxіt()
?>
- ASP. Прописываем следующее:
<%@ Lаnguаgе=VВScrіpt %>:
<%
Rеspоnsе.Stаtus=»3О1 Mоvеd Реrmаnеntly» – команда редиректа
Respоnse.АddHeаdеr «Lосаtіon», «httр://www.nоvyі-аdrеss.соm»
rеspоnsе.еnd
%>
- ASP.NET. В корневой папке сайта нужно найти web.config и прописать в этом файле такой набор команд:
<sсrірt runаt=»sеrvеr»>
рrіvаtе vоіd Раgе_Lоаd(оbjесt sеndеr, Systеm.ЕvеntАrgs е)
{
Rеsроnsе.Stаtus = «3О1 Mоvеd Реrmаnеntly»
Rеspоnsе.АddНеаdеr(«Lосаtіоn»,»httр://www.nоvyі-аdrеss.соm»)
}
</sсrірt>
- ColdFusion. Прописываем комбинацию:
<.сfhеаdеr stаtusсоdе=»3О1″ stаtustехt=»Mоvеd реrmаnеntly»>
<.сfhеаdеr nаmе=»Lоcаtіоn» vаluе=»httр://www.nоvyі-аdrеss.соm»>
- JSP (Java). Этот способ переадресации подходит, когда нужно внести незначительные коррективы в несложный проект. Можно внести код в один файл и разместить на каждой нужной странице с такими командами:
<sсrірt tyре=»tехt/jаvаsсrірt» srс=»rеdіrесt.js»></sсrірt>
<script type=»text/javascript»>
lосаtіоn=»httрs://yаndех.ru»
</sсrірt>
- CGI-скрипт на PERL. Используем следующее:
$q = nеw СGІ
рrіnt $q->rеdіrесt(«httр://www.nоvyі-аdrеss.соm/»)
- Ruby on Rails. Прописываем комбинацию:
dеf оld_асtіоn
hеаdеrs = «3О1 Моvеd Реrmаnеntly»
rеdіrесt_tо «httо://www.nоvyі-аdrеss.соm/»
еnd
- Nginx. Используем код:
іf ($hоst = ‘www.dоmаіn.соm’ ) {
rеwrіtе ^(.*)$ httр://dоmаіn.соm$1 реrmаnеnt
}
- HTML. Такой способ редиректа подходит для статичных несложных сайтов, на которых нужно изменить только отдельные страницы. Чтобы сделать переадресацию НТМL, нужно внести особый метатег. Например, для перемещения на другой сайт после 5 минут ожидания потребуется такая команда:
<mеtа httр-еquіv=»rеfrеsh» соntеnt=»5;httрs://mеstо-nаznасhеnіyа.рrо»>
Чтобы отправка посетителя на сайт https://mesto-naznacheniya.pro произошла моментально, достаточно заменить значение 5 на 0. Но если сайт крупный, такую переадресацию делать непросто и довольно долго, поэтому стоит выбрать более подходящий вариант.
Важные рекомендации по редиректу
Если настройка переадресации проведена с ошибками, ее эффективность снижается. Чтобы этого избежать, необходимо придерживаться некоторых рекомендаций.
- Не используйте последовательные редиректы. Это разрешенные переадресации, но если расположить коды друг за другом, с каждым следующим перенаправлением нагрузка на сервер будет возрастать, а эффективность редиректов падать. Поэтому лучше избегать промежуточных этапов и делать переадресацию с первоначального адреса сразу на окончательный.
- Размещая правила переадресации, начинайте с частных и от них переходите общим. В противном случае из-за возникающих противоречий они могут не сработать. Если общие правила находятся выше по списку, чем частные, они и срабатывают первыми.
- Для проверки кода HTTP стоит использовать специализированный сервис. Эта необходимость связана с тем, что переадресовки, как правило, запоминаются браузерами.
- Нельзя зацикливать переадресацию. Страница не должна в конечном счете приводить к самой себе. Циклическая переадресация выглядит примерно так:
- старый адрес – https://primer.com. После использования кода 301 (permanent redirect) он превращается в https://primer.com/;
- если после этого применяется код 302 (temporary redirect), происходит переход к первоначальному адресу;
- повторяется первый шаг.
Здесь разница между адресами страниц заключается в наличии или отсутствии слеша в конце строки. Сначала прописан 301-й редирект, а потом обратная переадресация по коду 302. И так повторяется по кругу.
Новая страница должна полностью повторять запрашиваемую. Чтобы редирект не оказался бесполезным, необходимо убедиться, что на них все совпадает до мельчайших нюансов, и посетитель или поисковик, запрашивая какую-либо страницу, попадал на точно такую же.
Как убрать редирект через панель управления сервера
Описанный ниже метод подойдет тем, кто настроил панель управления ISPmanager и меняет параметры сервера через нее.
- Открываем, собственно, сам ISPmanager.
- Кликаем по меню «Домены» в боковой панели.
- В появившемся списке опций выбираем вариант WWW-домены.
- Выделяем домен, в котором хотим удалить редиректы, кликнув по нему мышью.
- А затем переходим в меню «Редиректы».
- Таким же образом выделяем любое существующее (уже настроенное) перенаправление.
- Следом нажимаем на кнопку «Удалить».
- Подтверждаем свое желание, нажав на кнопку ОК.
Если вы используете новую версию интерфейса ISPmanager, то инструкция для вас немного изменится. На том шаге, где надо зайти в меню «Редиректы», надо будет сначала нажать на кнопку «Скрипты». Это новое меню, в которое спрятали нужный нам пункт настроек. В остальном процесс ничем не отличается.
Пользователям Plesk придется полностью удалить домен, на котором уже настроено перенаправление, и создать новый. К сожалению, эта система иначе делит домены на категории, задавая им тип еще на этапе создания, и не оставляет другого способа убрать переадресацию.
Переадресация в ней задается еще в момент создания нового домена. В меню «Создать», когда выбирается тип хостинга, надо указать «Хостинг веб-сайтов», а не «Перенаправление». Тогда сайт будет функционировать должным образом. Больше ничего делать не нужно.
Но важно учесть, что при удалении домена вместе с ним будут удалены все связанные папки, веб-приложения и файлы.
Что такое редирект
Прежде всего необходимо разобраться с вопросом «Что такое редирект сайта?». В дословном переводе с английского это слово означает перенаправление. Например, если на одной из городских улиц по какой-то причине случился затор, регулировщик может перенаправить городской трафик на другую. Редирект работает похожим образом.
Редиректом в терминах IT называют автоматическую переадресацию пользователя с одного адреса страницы на другой. В большинстве случаев процесс перенаправления абсолютно незаметен для посетителя сайта.
Наши продукты помогают вашему бизнесу оптимизировать расходы на маркетинг Узнать подробнее
Альтернативные методы переадресации
- Редирект 302. Применяется в случае временной переадресации с одного url на другой. При его использовании поисковая система индексирует все доступные версии сайта или страницы. Объединения ссылочного веса и внутренних метрик на приоритетном ресурсе не происходит.
- 307 Temporary Redirect рекомендуется применять в исключительных случаях. Например, при техническом обслуживании сайта, когда он недоступен некоторое время.
- Обновления Meta Refresh выполняют переадресацию не на уровне сервера, а непосредственно на сайте. Пользователь сталкивается с временной задержкой (обычно около пяти секунд), после чего для перехода на нужную страницу должен принудительно запустить определенную команду. Этот метод часто приводит к падению посетительского интереса и проседанию поисковых индексов.
- Редирект rel=«canonical». Позволяет сохранить доступ посетителям ресурса к контенту дублирующихся страниц. При этом для поисковиков наличие команды canonical на одной из страниц говорит о том, что только она подлежит индексации в поиске.
В большинстве случаев постоянная переадресация является более правильным решением, чем временная. На практике это объясняется просто. Предположим, сайт сменил доменную зону, а затем еще и обзавелся защищенным протоколом https. При настройке временной переадресации в индексе Яндекса и Google по одним и тем же запросам появились три версии сайта с пропорциональным проседанием позиций в выдаче. После настройки редиректа 301 на приоритетный url произошло склеивание дублей, робот вернул сайт в топ выдачи.
Не рекомендуется использовать постоянный редирект при временном переносе сайта или наличии серьезных проблем со старым доменным именем. Если адрес забанен или попал под поисковую фильтрацию, смена дислокации с применением переадресации не поможет избавиться от этих ограничений.
Использование функции PHP header() для редиректа URL-адреса
Если хотите добавить редирект с initial.php на final.php, можно поместить на веб-странице initial.php следующий код. Он отправляет в браузер новый заголовок location:
<?php $new_url = 'https://example.com/final.php'; header('Location: '.$new_url); ?>
Здесь мы используем PHP-функцию header(), чтобы создать редирект. Нужно поместить этот код перед любым HTML или текстом. Иначе вы получите сообщение об ошибке, связанной с тем, что заголовок уже отправлен. Также можно использовать буферизацию вывода, чтобы не допустить этой ошибки отправки заголовков. В следующем примере данный способ перенаправления PHP показан в действии:
<?php ob_start(); $new_url = 'https://example.com/final.php'; header('Location: '.$new_url); ob_end_flush(); ?>
Чтобы выполнить переадресацию с помощью функции header(), функция ob_start() должна быть первой в PHP-скрипте. Благодаря этому не будут возникать ошибки заголовков.
В качестве дополнительной меры можно добавить die() или exit() сразу после редиректа заголовка, чтобы остальной код веб-страницы не выполнялся. В отдельных случаях поисковые роботы или браузеры могут не обращать внимания на указание в заголовке Location. Что таит в себе потенциальные угрозы для безопасности сайта:
<?php $new_url = 'https://example.com/final.php'; header('Location: '.$new_url); exit(); ?>
Чтобы прояснить ситуацию: die() или exit() не имеют отношения к редиректам. Они используются для предотвращения выполнения остальной части кода на веб-странице.
При PHP перенаправлении на страницу рекомендуется использовать абсолютные URL-адреса при указании значения заголовка Location. Но относительные URL-адреса тоже будут работать. Также можно использовать эту функцию для перенаправления пользователей на внешние сайты или веб-страницы.
Цепочки редиректов
Что это и почему это плохо?
Цепочка редиректов — это перенаправление не в один, а в больше, чем 2 шага. Специалисты спорят про их вредность: не сильно вредными называют до 5 переходов, так как поисковые роботы способны по ним перейти.
Для эффективного продвижения сайта цепочек не должно быть на сайте вообще. Цепочка редиректов может привести к циклическому редиректу, если некорректно его настроить. И это негативно скажется на поисковой выдаче. Причиной появления цепочек переходов и циклического перенаправления может быть заражение вирусами. Поисковые системы могут посчитать ваш сайт небезопасным для пользователей и препятствовать посещению.
Как найти?
Для поиска цепочек используйте чекеры или специальные сервисы. Самые популярные:
Здесь собрано много полезных инструментов для веб-мастера, в том числе и для проверки редиректов сайта. Сервис работает быстро и показывает всю цепочку редиректов, а не одно перенаправление.
Это инструмент для комплексного SEO-аудита, который позволяет также находить цепочки редиректов.
Можно смотреть цепочки редиректов, время и код ответа. Проверяет страницу на наличие ошибок сервера, доступность, успешность проведения запроса.
Позволяет увидеть всю цепочку перенаправлений. С его помощью можно убедиться, что редиректы работают правильно или на каком этапе в цепочке подхватываются cookies — они обозначаются круглым желтым значком. Сервис бесплатный.
Также для проверки можно применять расширения для браузеров:
Обнаружив цепочку перенаправлений, необходимо установить источник проблемы. Если вы сами настроили редиректы, вам следует их убрать или поменять на одиночные.
Как устранить?
Вам понадобится выяснить причину и понять, почему возникает перенаправление. Проверьте логи, действительно ли там есть эти перенаправления. Если не нашли, то поищите в основном коде подобные строки:
Если страница, на которой обнаружена перенаправление, имеет динамический адрес, который генерируется при переходе, возможно, скрипт сам генерирует и редиректы. Будьте бдительны при перезаписи URL адресов страниц, особенно используя шаблоны. Это распространенная причина цепочек и циклов перенаправления.
Важно! Стоит убрать с сайта внутренние ссылки на редиректы или заменить ссылками на доступные страницы. Чтобы увидеть входящие ссылки на такие URL, достаточно нажать комбинацию клавиш Shift+F1
Canonical против 301-й переадресации
Есть, безусловно, некоторые нюансы, но поисковики прописали вполне конкретные правила применения этих команд. Яндекс и Google расшифровывают их следующим образом:
- canonical – наличие нескольких вариантов содержимого страницы. Должна быть просканирована приоритетная для владельцев сайта версия, помеченная canonical. Доступ к остальному контенту сохранится, но нет необходимости включать его в индекс.
- 301 – окончательный переезд страницы на новое место без перспективы возврата. Нужно перестать ее индексировать и перенести вес на новую публикацию.
Использование кода 301. Такой редирект по умолчанию является оптимальным, поэтому может применяться практически в любых ситуациях. Также код 301 используется, если страница переместилась безвозвратно, если ресурс продается или проводится его ребрендинг, и в связи с этим меняется доменное имя, если появляется ошибка 404 и есть контент, который уже неактуален, но генерирует массу трафика и имеет ссылки со сторонних площадок.
Использование canonical. Такой редирект применяется в случае появления сложностей с постоянным редиректом. Также canonical используется при наличии у статьи полезных для посетителей дублей (например, содержащих описания одного товара, но с разной расцветкой), в случаях, когда у контента разные адреса или если есть кросс-домены, на которых размещены схожие публикации.