Бедствие redirect php. Как в PHP задать редирект на другой URL до загрузки страницы? Скрипт php редиректа с задержкой и таймером обратного отсчета

Бедствие redirect php. Как в PHP задать редирект на другой URL до загрузки страницы? Скрипт php редиректа с задержкой и таймером обратного отсчета

27.02.2019

Наверняка многие из вас сталкивались с ситуацией, когда браузер отказывается загружать определенную страницу в Интернете, выводя вместо нее сообщение о некоей "Ошибке 404". Реакцию пользователей на такое сообщение можно охарактеризовать по-разному: к нему относятся отрицательно или равнодушно, его боятся или попросту игнорируют. Между тем далеко не каждый знает о том, что в честь этой ошибки создаются целые Интернет-проекты и каталоги ресурсов, проводятся конкурсы и созтязания, наконец, ей даже признаются в любви!

Однако, обо всем по порядку.

Проза жизни

Прежде всего давайте разберемся, что такое "Ошибка 404" и в каких случаях она возникает. С технической точки зрения, "Ошибка 404" (или Error 404) - это кодовый заголовок статуса протокола HTTP (HyperText Transfer Protocol), который, как известно, является чем-то вроде основы взаимодействия удаленных компьютеров всемирной сети. При обращении браузера к веб-серверу, последний посылает кодовый статус запрашиваемого документа. При корректной обработке этого запроса статус идентичен коду "200 OK". Однако, пользователь не может видеть подобного сообщения по причине отображения содержания запрошенного веб-сайта в своем браузере. В случае если запрос документа браузером обработан с ошибками, пользователь наблюдает сообщение, имеющее статус "404: Not Found".

Что же означают эти загадочные цифры - 404? Первая цифра 4 указывает на ошибку программы-клиента, т.е. браузера. В этом случае предполагается, что URL сайта был набран неверно в адресной строке браузера или больше не существует физически на запрошенном сервере. Цифра 0 означает общую ошибку синтаксиса протокола. Наконец, последняя четверка относится к отдельной категории ошибок 40х, которая также включает такие распространенные статусы, как "400: Bad Request" и "401: Unauthorized".

Миф ошибки 404

Некоторые зарубежные источники несколько по-иному трактуют расшифровку сочетания цифр 404. В частности, утверждается, что основная база данных научного центра CERN (European Organization for Nuclear Research), принявшего самое активное участие в развитии World Wide Web, находилась на 4-ом этаже в комнате № 404. И когда объем обрабатываемых данных превысил определенные нормы, уже не позволяющие нескольким ученым одновременно обращаться к одному и тому же файлу, разработчики якобы решили выдавать сообщение об ошибке вида "Room 404: file not found".

Однако, данное заявление опровергается одним из ученых, входящих в группу разработчиков центра CERN. Согласно его утверждению, "Комнаты № 404 вообще не существовало в лаборатории CERN по причине совершенно иной системы нумерации офисов, по которой первая цифра (прим. автора: "4") означала порядковый номер корпуса здания, а комбинация вторых - номер комнаты. При этом было бы странно говорить о комнате № 04, учитывая тот факт, что нумерация в CERN начиналась с цифры 410".

Причины и последствия

Как уже было сказано выше, согласно спецификации протокола HTTP, "Ошибка 404" может быть вызвана либо неверным указанием адреса (URL) запрашиваемого сайта, либо отсутствием документа на веб-сервере. Распространение в России соединения к Интернету с помощью телефонной линии (dial-up) добавляет еще одну вероятную причину возникновения "Ошибки 404", а именно - плохую связь с модемным пулом провайдера.

Памятка серфера в ситуации 404
  • Шаг 1
  • Попробуйте перезагрузить страницу. Возможно, это просто случайность.
  • Шаг 2
  • Поищите ошибки в написании URL или попробуйте модифицировать расширение загружаемого документа (например, поменять *.htm на *.html и наоборот).
  • Шаг 3
  • Поднимитесь в структуре URL на один уровень выше и оттуда попытайтесь найти искомый документ, например:

    http://www.site.ru/docs/users/masha.html
    поменять на
    http://www.site.ru/docs/users/

  • Шаг 4
  • Попробуйте поискать нужную страницу в поисковой системе: в отличие от забывчивых веб-мастеров, спайдеры более ответственно относятся к содержанию своих индексов.
  • Шаг 5
  • Свяжитесь с веб-мастером Интернет-ресурса, на котором нет искомой страницы, по электронной почте. Наверняка он отблагодарит вас за то, что вы нашли "битую" ссылку.

    Как же склонен реагировать пользователь на появление сообщения об "Ошибке 404"? В большинстве случаев любые попытки загрузить необходимый документ в дальнейшем отклоняются в принципе: люди привыкли ценить время своего пребывания в Интернете и предпочитают поискать аналогичный ресурс, удовлетворяющий их требованиям. При этом далеко не каждый знает о третьей причине вероятной "Ошибки 404" - плохой связи - посему не станет себя утруждать повторными попытками загрузить желанную страницу.

    "Ошибка 404" может возникнуть по вине пользователя Сети, который невнимательно записал со слов друга адрес интересного сайта, или набрал URL в адресной строке браузера с грамматическими ошибками. Также "дать маху" способен веб-мастер, который при реорганизации структуры сайта или "чистки" содержимого сервера может за ненадобностью (как ему кажется) удалить тот или иной документ. Если последний проиндексирован поисковыми системами, то вполне возможно, что несуществующий документ будет выведен в результирующем списке по поисковому запросу пользователя. Или же конкретный Интернет-ресурс некогда был добавлен в "закладки" браузера, чтобы обратиться к нему по необходимости в будущем. Таких случаев достаточно много, и все они ведут к возникновению "Ошибки 404".

    Раздолье для веб-мастера

    Стандартное сообщение об "Ошибке 404" носит весьма аскетичный и строгий характер. Но самое главное - оно в большинстве случаев не только огорчает пользователя, но и ставит его в тупик: тот не знает, что ему предпринять и в конечном итоге, как правило, покидает сервер, который выдает непонятную ему ошибку. Это - большой промах веб-мастера, который таким образом теряет своих потенциальных покупателей, клиентов, заказчиков и т.п.

    Однако при доступе к некоторым настройкам веб-сервера любой веб-мастер (или системный администратор) может оформить внешний вид стандартного сообщения "404: Not Found". Трудно себе представить просторы для фантазии и красноречия, которые открываются в этом случае перед разработчиками того или иного Интернет-ресурса. Теперь можно направить заплутавшего посетителя в нужном направлении, подсказать ему искомый адрес, наконец - просто посочувствовать и перенаправить на заглавную страницу своего сайта. Другими словами, диалог между поставщиком услуг (которым в какой-то мере является практически любой веб-ресурс) и пользователем не нарушается даже при возникновении ошибки.

    Содержание
  • Используйте как можно меньше сложных терминологических выражений и специфических, непонятных простому пользователю формулировок. Излагайте суть ситуации просто и понятно.
  • Успокаивайте пользователя и всегда укрепляйте его веру в то, что искомый документ обязательно найдется на вашем сервере.
  • Приводите возможные причины возникновения ошибки (технические рассуждения смело заменяйте на предположение о неверном написании URL и т.п.).
  • Навигация

  • Всегда указывайте ссылки, ведущие на какой-либо из доступных разделов сайта (первая страница, карта сайта и пр.).
  • Включайте основную навигацию в структуру сообщения об ошибке 404: так пользователю будет проще сориентироваться на вашем сервере.
  • Указывайте свои координаты для связи.
  • По возможности, разместите на странице с сообщением об ошибке форму поиска по сайту.
  • Оформление

  • Избегайте тяжеловесных, перегруженных графикой, заполненных Flash-анимацией и Java-апплетами страниц с сообщением о "404: Not Found". Эта страница должна грузиться в считанные секунды.
  • Постарайтесь, чтобы оформление страницы 404 не сильно отличалось от общего дизайна вашего сайта.
  • Хобби бывают разные...

    Одни собирают почтовые марки, вторые увлекаются коллекционированием пуговиц, третьи находятся в вечной погоне за раритетными монетами. А есть люди, которые коллекционируют самые разнообразные варианты "Ошибок 404"! И тому есть вполне разумное объяснение: бурное развитие Интернета вообще и изобразительного искусства, в частности, повлекло за собой возникновение различных образцов визуальной интерпретации статуса протокола 404: смешных и грустных, для детей и взрослых, поучительных и агрессивных и пр.

    Например, каталог ссылок одного из самых авторитетных ресурсов, посвященных "Ошибке 404", - "404 Research Lab" , насчитывает свыше 20 различных тематических категории, содержащие множество вариантов отображения "Ошибки 404": "Забавные", "Дружелюбные", "Для взрослых", "Полезные", "Философские", "Шокирующие", "Неожиданные" и др. В другом каталоге - 404Lounge.Net расположена одна из крупнейших галерей "Ошибок 404", включающая более 700 разнообразных вариаций вывода сообщения "404: Not Found".

    Я Вас любил, чего же боле?...

    Открытие каталогов "Ошибки 404" и тематических рубрикаторов, новостные ленты событий в мире "404: Not Found" и креативные изыски веб-мастеров многочисленных серверов по оформлению сообщения об ошибке - это все еще как-то можно понять и логически объяснить. А как вы посмотрите на сочинительство хвалебных од и любовных посвящений в честь "Ошибки 404"? Удивлены? Не верите? Совершенно напрасно, в доказательство чего ниже приводится фрагмент прозаического шедевра под названием "404: Чистилище: Любовное посвящение ошибке 404" ("404 Purgatory: A Loving Tribute to 404 Not Found"):

    "Свершилось! Вы познали тайное могущество 404. Вы блуждаете по закоулкам Интернета всю ночь напролет, вы купили себе новый модем и модную эргономичную мышь. Они вам пригодятся. Вы с ловкостью жонглера оперируете семью окнами браузера одновременно и вдруг - 404. Вы не верите своим глазам, ведь этот сайт открывался на прошлой неделе. Вы нажимаете Refresh, с замиранием сердца ожидая чуда. О, нет! Как могли вас предать эти бесчестные закладки браузера?..."

    "Почему мы так быстро оставляем 404? Мы не понимаем, что 404 - это оазис Интернета. Она как передышка в долгом и изнурительном пути веб-серфера, как глоток живительной влаги посреди иссохшей пустыни… Ошибка 404 полна загадки и интриги. Чего мы ждем от браузера? Какую радость нам предстоит познать? Сможем ли мы вновь и вновь вернуться сюда? 404 молча хранит эту тайну, и это заставляет людей снова возвращаться сюда, дабы с каждым разом познать что-то новое и необычное..."

    "Там, где была тьма, теперь ошибка 404. И с миром все в порядке."

    Безусловно, не стоит относиться к такому толкованию сущности "Ошибки 404" всерьез: это всего лишь шутка, добрая ирония по отношению к обычному жизненному явлению. И в следующий раз, когда на экране своего монитора вы увидите "404: Not Found", не расстраивайтесь и не злословьте в адрес нерасторопного веб-мастера: просто улыбнитесь, вспомнив строки этого "любовного посвящения".

    Эта ошибка означает, что страница которую пытается просмотреть пользователь не найдена или не существует. При этом сам пользователь никак не сможет повлиять на решение вопроса. Единственное, что он может сделать - найти похожую информацию на этом же сайте. Например адрес с ошибкой www.example.com/not-founded-page.html заменить на www.example.com

    Почему это происходит?

    Это происходит из-за того, что пользователь перешел на страницу сайта по неправильной ссылке. Например пользователь ввел в браузере (или перешел по ссылке) http://mysite.com/rbot.html, а нужно было - http://mysite.com/ro bot.html. Причем, эта ссылка могла находится как на вашем сайте, так и на сторонних сайтах. Обнаружить такие ссылки можно с помощью Google Webmaster Tools. Для этого переходим на страничку данного сервиса , выбираем свой сайт, а дальше жмем: Состояние -> Ошибки сканирования и выбираем "Не найдено".

    Также хорошо с этой задачей справляется бесплатная программа XenuLinks, скачать которую можно , а посмотреть мануал - .

    Как исправить ошибку 404?

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

    Когда пользователь заходит на сайт и видит данную ошибку через выдачу сервера, то он не видит ваш сайт (меню, навигацию, дизайн и т.д.). Соответственно со 100% вероятностью закроет страницу. Такая схема работает на всех хостингах по умолчанию. Но вы можете запрограммировать данную страницу и показать вместе с ней свой сайт. А это значит, что пользователь видя в меню основные ссылки вашего сайта может нажать на них, и остаться на сайте. Вот примеры неправильной и правильной выдачи соответственно:

    Есть много разных способов реализовать подобную схему, но самый универсальный из них - это добавить в файл.htaccess такую запись:

    ErrorDocument 404 /error404.html

    Соответственно саму страницу "/error404.html" вам нужно будет предварительно создать.

    С переадресацией (она же - «редирект») сталкивался каждый пользователь интернета. Достаточно просто выбрать в поисковой системе любой сайт из выдачи и поисковая система автоматически перенаправит Вас на сайт. В этой статье мы расскажем о том, какие виды переадресации существуют и как их настроить.

    Основные операторы регулярных выражений

    Для начала давайте разберемся с основными операторами регулярных выражений (флаги, модификаторы, специальные символы):

    Спецсимволы:

    • ^ — ограничение слева (начало строки);
    • $ — ограничение справа (конец строки);
    • . — любой символ;
    • () — переменная;
    • \ — экранирование (символ после \ считается обычным, а не спецсимволом);
    • — диапазон значений;
    • ! — спецсимвол отрицания.

    Модификаторы:

    • ? — символ повторяется 0 или 1 раз;
    • + — 1 и более символов (до 65536);
    • * — 0 и более символов (до 65536).
    Как настроить 301 редирект htaccess

    Начнем с 301 редиректа в htaccess. Во-первых, он представляет из себя автоматическую переадресацию с одного адреса на другой. Он вполне может применяться в том случае, когда сайт переводится с протокола http на https, когда сайт перенастраивается с «полноразмерных» адресов на ЧПУ (т.е. было https://www.karcher.xyz/content/news/31-01-2017/razdatka , стало https://www.karcher.xyz/ razdatka), а также для «склеивания» страниц-дублей. Во-вторых, 301 редирект сообщает поисковым системам, что «ребята, имеющийся у вас адрес уже не работает, поэтому идите вон туда», а они такие «ОК, учтем». Таким образом, переадресация происходит безболезненно, без потери позиций и ссылочной массы.

    Но что будет, если «Ой, да ну нафиг? Буду я еще с переадресациями заморачиваться, только время потеряю!»? Можно сделать и так, НО… история «старой» страницы будет утрачена, а «новая» будет ранжироваться «с нуля». Как следствие - потеря позиций и ссылочной массы (это в лучшем случае).

    Варианты применения 301 редиректа:

    • Склейка доменов;
    • Переезд сайта на другой адрес (может пригодиться при попадании сайта под какие-либо фильтры);
    • Для увеличения показателей тИЦ, PR и увеличения трафика при покупке другого домена (настраивается редирект на ресурс, который нуждается в поднятии тИЦ и PR);
    • При смене движка сайта (в этом случае настройка 301 редиректов строго обязательна, в противном случае гарантирована полная потеря трафика);
    • при переезде с http на https;
    • склейка «дублей»

    и т.д., всех причин не перечислить.

    301 Редирект при смене домена основного сайта

    Итак, Вы решили сменить домен. Сразу же даем готовое решение:

    • переделываем robots.txt на старом домене. Готовый текст файла:

    User-agent: Yandex

    Host: newsite.com

    • настраиваем 301 редирект для всех страниц сайта (кроме файла robots.txt) с помощью приведенного ниже кода:

    RewriteCond %{REQUEST_FILENAME} robots.txt$

    RewriteRule ^([^/]+) $1 [L]

    RewriteCond %{HTTP_HOST} !^www\.site\.com

    301 редирект при смене адреса страницы

    Постраничный редирект (когда меняется адрес страницы) осуществляется с помощью приведенного ниже кода:

    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^www\.stokrat\.org$

    RewriteRule ^stranica/nastrojka-301-redirekta/$ https://www.сайт/newpage/

    Именно этот код используется при «переезде» страниц, например, на ЧПУ.

    Настроить редирект с www на домен без www в htaccess

    Упоминание www. в адресе домена уже давно не является актуальным. Тем не менее сайтов с www. полно. Склеивание доменов с www. и без должно производиться в строго обязательном порядке, т.к. поисковые системы воспринимают эти 2 домена как 2 разных сайта с разными тИЦ, PR, посещаемостью, ссылочной массой и всем остальным. Следовательно, один из них - оригинал, а второй - «самозванец» с «ворованным контентом». Чтобы этого не происходило - домены с www. и без необходимо «склеить» с помощью 301 редиректа. Код настройки приведен ниже.

    Код редиректа с www на без www в htaccess выглядит так:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.site.ru$

    Теперь давайте разберемся с директивами.

    RewriteEngine on/off - если выражаться простым человеческим языком - она служит выключателем 301 редиректа.

    RewriteCond — в этой директиве прописываются условия для «срабатывания» следующей директивы.

    RewriteRule — директива преобразования одного адреса в другой.

    Настроить 301 редирект с http на https через htaccess

    Переезд с http на https многие считают «современным трендом». Однако, на сегодняшний день данная мера является обязательной (хотя формально она таковой не является). И вот настал тот час, когда Вы получили SSL-сертификат, Ваш сайт уже работает и по http и по https. Все что осталось настроить в файле.htaccess 301 редирект с http на https версии страниц сайта. Код для настройки приведен ниже.

    RewriteRule ^(.*)$ https://site.ru/$1

    А вот код на обратный редирект с https на http. Как видите, отличие всего в 1 символ:

    RewriteCond %{SERVER_PORT} !^443$

    RewriteRule ^(.*)$ http://site.ru/$1

    Редирект со страниц index.php, index.html

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

    Поскольку в подзаголовке упомянуты index.php и index.html - Вы уже догадались, что с помощью 301 редиректа мы будем избавляться от дублей главной страницы:

    Однако, если у главной страницы есть дубль вида site.ru/index.php, вполне вероятно, что и у остальных страниц есть дубли вида site.ru/index.php/page.html (при оригинальном адресе site.ru/page.html ). Это плохо, поэтому также требуется настройка 301 редиректа с помощью приведенного ниже кода:

    RewriteRule ^index\.php/(.*)$ /$1

    Нередки случаи, когда у главной страницы есть дубль вида

    site.ru/main.html , для которого так же необходимо прописывать 301 переадресацию на site.ru :

    RewriteEngine On

    RewriteCond %{THE_REQUEST} ^{3,9}\ /main\.html\ HTTP/

    Либо альтернативный вариант:

    Redirect 301 /main.html HYPERLINK "http://site.ru/" http :// site . ru /

    А вот теперь рассмотрим обратную ситуацию - когда Вы хотите склеить дубли, настроив переадресацию с site.ru на site.ru/main.html . Сделать это можно с помощью приведенного ниже кода.

    RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)

    RewriteRule .* %1.html

    RewriteRule ^(.*)/$ /$1.html

    Ну а если Вам важно, чтобы адреса всех внутренних страниц отображались без.html на конце, то redirect настраивается вот таким кодом:

    RewriteCond %{REQUEST_URI} \.html$

    RewriteRule ^(.*)\.html$ /$1

    Теперь о том как сделать редирект со страницы на страницу а именно с.htm на страницы.html. Для настройки такой переадресации достаточно добавить в.htaccess следующий код:

    RewriteRule ^(.*)\.htm$ $1.html

    Редиректы с адресов со слэшами в конце и без них

    Для начала рассмотрим еще один вид дублей страниц - страницы вида http://site.xyz/page и http://site.xyz/page/ - кроме слэша в конце, они ничем не отличаются. Настраивать redirect можно и с первой на вторую, и со второй на первую. Рассмотрим оба варианта:

    Редирект с http://site.xyz/page на http://site.xyz/page/:

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_URI} !\..+$

    RewriteCond %{REQUEST_URI} !/$

    RewriteRule (.*) http://www.site.ru/$1/

    Redirect с http://site.xyz/page/ на http://site.xyz/page:

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{REQUEST_URI} ^(.+)/$

    RewriteRule ^(.+)/$ /$1

    Причем абсолютно не важно, будет ли у Вас после редиректа слэш в конце адреса или нет. Главное - чтоб эти адреса были склеены с помощью 301 редиректа.

    Редирект на мобильную версию сайта

    Разумеется, если Ваш сайт работает на движке WordPress или Joomla, то настроить редирект на мобильную версию сайта можно с помощью плагинов.

    Однако, Google является сторонником адаптивного дизайна. Следовательно, выделять отдельный домен/поддомен для мобильной версии не нужно. Т.е. в Google утверждают, что «если есть возможность обойтись без редиректов на мобильную версию - именно так и нужно поступать».

    Но что делать, если без таких редиректов все-таки не обойтись?

    Можно настроить редирект через файл.htaccess

    RewriteEngine On

    RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml"

    RewriteCond %{REQUEST_URI} ^/$

    RewriteRule ^ http://m.domain.com%{REQUEST_URI}

    Настройка мобильного редиректа через PHP

    Необходимо воспользоваться специальной библиотекой Mobile Detect, она необходима для того, чтоб распознать, с мобильного устройства пришел пользователь, или со стационарного.

    $detect = new Mobile_Detect;

    if ($detect->isMobile()) {// код}

    if ($detect->isTablet()) {// код}

    if ($detect->isiOS()) {// код}

    if ($detect->isAndroidOS()) {// код}

    Из этого кода становится очевидно, что можно распознать не только компьютер/смартфон/планшет, но и его операционную систему.

    JavaScript редирект

    С помощью приведенного ниже кода происходит переадресация на мобильный поддомен. Основанием для переадресации служит разрешение экрана - до 480 пикселей в ширину. Именно в ширину, не в высоту.

  • if (screen.width на

    Способ 2. Настройка редиректа на site.com через.htaccess, вставив вот этот код:

    RewriteCond %{QUERY_STRING} ^route=common/home$

    RewriteRule ^index\.php$ http://site.com/?

    Таким же (а именно - вторым) способом можно настроить редиректы со старых адресов категорий на новые. По умолчанию адреса ссылок в OpenCart выглядят примерно следующим образом:

    site.com/index.php?path=83_94_113&route=product/category

    На такие ссылки смотреть очень больно, причем в прямом смысле, т.к. глаза реально начинают болеть при виде таких адресов. В том же.htaccess можно настроить редирект на «человеческие» адреса вида site.com/category с помощью такого кода:

    RewriteCond %{QUERY_STRING} ^path=83_94_113&route=product/category$

    RewriteRule ^index\.php$ http://site.com/new-category?

    Но что делать с динамическими адресами, которые из-за привязки к определенной секции имеют вид site.com/katalog?c=okna-pvkh ?

    Программисты довольно долго искали решение. «Методом тыка» (точнее - проб и ошибок) решение было найдено. В данном случае происходит редирект на главную страницу сайта:

    RewriteCond %{QUERY_STRING} ^c=okna-pvkh$

    RewriteRule katalog http://site.com/?

    Примечания и ошибки

    Теперь поговорим о том, как не допускать ошибок при настройке 301 редиректа:

    • Нельзя нарушать последовательность правил переадресации. После настройки редиректа необходимо убедиться, что настройка не дала каких-либо «побочных эффектов». Если нарушить последовательность правил, то ранее настроенные редиректы могут либо прекратить функционировать, либо функционировать неправильно. Противоречий в правилах быть не должно.
    • Не стесняйтесь пользоваться официальными мануалами, т.к. у 301 редиректа из-за непростого синтаксиса есть множество особенностей. Упустить какой-то нюанс при настройке - проще простого.
    • После очередных «допиливаний» ВСЕГДА проводите полную проверку работоспособности тех правил, которые были внедрены ранее. Настройка без проверки - это не настройка даже «для галочки». Один лишний символ может «обвалить» работу всего сайта, либо заставить его работать неправильно. За другими программистами нам уже не раз приходилось исправлять работу сайта, когда с адреса site.com/oldpage происходит 301 редирект на site.com/newpage , а затем с помощью того же 301 редиректа происходит переадресация обратно на site.com/oldpage и далее «по кругу».

    Ну и в заключение приведем несколько примеров, когда применять 301 переадресацию вообще нельзя.

    Во-первых, «многоходовки», когда идет череда из нескольких 301 редиректов подряд. Гораздо правильнее настроить редирект сразу на «финишный» адрес.

    Во-вторых, если по каким-то причинам есть 2 страницы с дублирующим контентом, но нужно сохранить для пользователей обе.

    В-третьих, редиректы «не туда». Т.е. если страница переехала с первого адреса на второй, а при настройке редиректа Вы ошибочно указываете адрес совершенно другой страницы.

    В-четвертых, redirect на страницу, которая работает по каким-то причинам очень некорректно. Страница должна работать стабильно и отдавать либо код 200, либо код 404.

    В-пятых, редирект файла robots.txt. Это запрещено правилами многих поисковых систем. Более того, многие допускают одну и ту же ошибку - когда настраивают htaccess редирект на https с http://site.xyz/robots.txt на https://site.xyz/robots.txt . Файл robots.txt должен быть доступен по обоим адресам без всяких переадресаций. Ровно то же самое касается и xml-карты сайта.

    Last modified on February 25th, 2017 by Vincy.

    PHP redirect mechanism is used to navigate the user from one page to another without clicking any hyperlinks. This will be helpful in such circumstances where the redirect should be done in the background. For example, when the user is accessing payment gateway, the redirect should automatically be taken place to notify URL using PHP script.

    PHP provides predefined function, named header(),for URL redirection. Using this header() function, we need to send location header by specifying URL to which the page should be redirected.

    Unlike where there are several ways to handle URL redirect works based on the browser, PHP avoids such confusion and have header() function create the same effect in all browsers. For that only, we have concluded with JavaScript redirect article that server side redirect is preferable.

    PHP Redirect Syntax header("Location: target-url ");

    In the above syntax of PHP redirect, we need to replace with a valid URL to which we want to move. We can specify either absolute URL or relative URL for this location header. If we specify relative URL, it will search for the page in our domain where we exist.

    Note: Before specifying page URL for location header, we should make sure that the page exists.

    Caution before Redirect

    Before executing PHP redirect, we should ensure about, no output is sent to the browser before the line where we call the header() function. For example,

    Echo "PHP Redirect"; header("Location: сайт");

    This script will display the following warning notice to the browser.

    Warning: Cannot modify header information - headers already sent by (...

    It is not only applicable for header function, rather for all the PHP functions like set_cookie(), session_start() and etc., whatever can modify the header. For that, we should remove all content which will stop sending location header to the browser.

    Possible Ways of Sending Output
    • HTML content like text or tags.
    • Unnecessary white spaces before PHP delimiters.
    • PHP error or warning notices that occur before calling redirect.
    • PHP , like, echo(), print().
    Safety Measures from output being Sent before PHP Redirect
    • Since HTML content should be sent before the redirect, we can separate PHP logic from HTML content.
    • For being in the safety side we can put exit command after redirect statement of PHP file. For example, header("Location: сайт"); exit;
    • We can enable PHP output buffering to stop sending output to the browser and stored into a buffer instead.

    Послать каждый может. А вот правильно перенаправить – это целое искусство. Но еще труднее дается перенаправление пользователей на нужный путь в интернете. Для этого лучше всего подходит редирект на php .

    Что за редирект?

    В веб-программировании возникают ситуации, когда нужно перенаправить пользователя, переходящего по ссылке, на другой адрес. Конечно, на первый взгляд реализация такого перенаправления выглядит немного «незаконной ». На практике же, такой редирект востребован не только среди злоумышленников, но и среди честных вебмастеров:

    В каких случаях может потребоваться редирект:

    • Когда происходит замена движка сайта – в результате этого меняется архитектура всего ресурса. После чего возникает проблема, как сделать редирект;
    • При перекройке структуры ресурса – происходит добавление, удаление или перенос целых разделов или одного материала. Пока происходит этот процесс, временно можно организовать перенаправление пользователя на нужный раздел;
    • Если сайт недавно сменил свое доменное имя – после смены имени домена старое еще некоторое время будет фигурировать в поисковой выдаче. В этом случае редирект пользователя на новый домен будет реализован поисковой системой автоматически;
    • В процессе авторизации – как правило, на большом сайте есть две группы пользователей: обычные посетители и администраторы ресурса. В таком случае имеет смысл реализовать редирект каждого пользователя согласно его правам и роли. После авторизации администратор или модераторы сайта попадают в административную часть ресурса, а посетители – на пользовательскую часть ресурса.
    Особенности редиректа на php

    В отличие от других языков php обладает некоторыми преимуществами в реализации редиректа:

    • Php является серверным языком программирования. Поэтому перенаправление будет происходить не в html коде страниц, отображаемых в браузере, а в скрипте, размещенном на сервере;
    • Редирект на php может быть реализован несколькими способами. Что во многом расширяет его применение;
    • Благодаря обработке данных на сервере перенаправление, реализованное с помощью php, менее восприимчиво к действию фильтров поисковых систем.

    Для редиректа в php используется функция header() . Она применяется для отправки заголовка http . Ее синтаксис:

    void header (string $string [, bool $replace = true [, int $http_response_code ]])

    Принимаемые функцией аргументы:


    • string $string – строка заголовка;

    Существует два типа этого аргумента. Первый предназначен для отправки кода состояния соединения. Он начинается с "HTTP/". Другой тип вместе с заголовком передает клиентскому браузеру код состояния (REDIRECT 302). Этот аргумент начинается с "Location:"


    • bool $replace – является необязательным атрибутом типа bool . Отвечает за переопределение предыдущего заголовка. Если будет задано true , то предыдущий заголовок или заголовки одного типа будут заменены. Если в аргументе задано false , то перезапись заголовка не состоится. По умолчанию, задано значение true ;
    • http_response_code – аргумент принудительно устанавливает код ответа HTTP . Установка кода пройдет успешно при условии, что аргумент string не будет пустым.

    Код состояния HTTP представляет собой часть верхней строки ответа сервера. Код состоит из трех цифр, после которых идет поясняющая надпись на английском языке. Первая цифра отвечает за класс состояния. Редиректу соответствуют коды от 300 до 307. Их полное описание можно найти в соответствующей технической документации.

    При использовании функции header() для редиректа внешних ссылок большое значение имеет место расположения ее вызова. В коде он должен находиться выше всех тегов html :


    Применение редиректа header()

    Для демонстрации действия функции на локальном сервере нужно создать два файла. Один из них назовем redirect.php , а другой redirect2.php . Внутри первого разместим вызов функции в следующем формате:

    В другом файле помещаем строку:

    echo "Привет! Вы находитесь в файле redirect2.php";


    Еще несколько практических примеров использования редиректа на php :

    • Принудительная передача кода состояния http – при использовании первого аргумента функции header() типа «location » по умолчанию в заголовок передается код состояния «302 » (временно перемещен ). Это может стать проблемой при переносе ресурса на другое доменное имя. В поисковиках такое временное перенаправление может затянуться. Ведь поисковик постоянно анализирует код состояния. А в нем записано «временно перемещен ». Пример принудительной перезаписи кода состояния «302 » на «301 » (постоянно перемещен ):

    Также перезапись возможна в два этапа. Первая строка производит перезапись кода состояния, а вторая перенаправляет на новый адрес:

    • Использование редиректа внешних ссылок для перенаправления в зависимости от роли пользователя. Роль определяется во время процедуры аутентификации. Значение для обработки записывается в переменную $who :

    • Упрощенный практический пример реализации редиректа внешней ссылки – клик по ссылке ведет на страницу php . Отсюда пользователя через 5 секунд перекидывает на Рамблер. Код html :

    Нажми меня

    Код файла redirect3.php :


    Ну, вот мы и научились основам редиректа на php. Теперь можно смело браться за перенаправление пользователей в нужное русло. Главное не ошибиться в направлении, а то приведете всех своих юзеров на чужой сайт…



  • © 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows