php redirect url to url

Как сделать редирект в PHP

Читайте нашу статью, чтобы узнать, как сделать редирект PHP.

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

Редирект — это перенаправление пользователя с одной страницы на другую. Причём редирект можно настроить как на разные страницы одного сайта, так и на страницу другого сайта.

Основные виды редиректов:

PHP location redirect

Для чего нужен редирект

Редирект может понадобиться в следующих ситуациях:

Redirect PHP URL HTTP

Переадресацию можно настроить несколькими способами:

PHP — серверный язык программирования. Это значит, что переадресация будет срабатывать не в коде страницы, а в скрипте, который размещен на сервере. По сути, вы добавляете в код индексного файла скрипт перенаправления. HTML — это язык разметки веб-страниц. Перенаправление можно сделать с помощью метатега, и редирект будет работать именно через код страницы.

Главная особенность редиректа на PHP в том, что переадресация прописана не в коде странице, а с помощью скрипта на сервере. Благодаря этому снижается восприимчивость к фильтрам поисковых систем.

Ниже мы подробнее рассмотрим принцип работы и настройку редиректа в PHP.

Как работает редирект в PHP

Предположим, вы сделали редирект со страницы index.php на index1.php. Когда пользователь откроет страницу с редиректом, в системе произойдёт следующее:

Браузер запросит файл стартовой страницы index.php с сервера.

Сервер, получив запрос от браузера, сообщит, что файл index.php больше недоступен и браузеру нужно искать новый файл index1.php.

Браузер отправит новый запрос к серверу, на котором находится index1.php, и получит ответ.

Браузер отобразит страницу index1.php.

Как настроить PHP-редирект

Прописывать редирект на сайт в PHP нужно в индексном файле. Чаще всего он называется index.php. Для настройки вам понадобится функция header( ). Она выглядит так:

Где $header — строка HTTP-заголовка, который вы будете использовать. Для редиректа нужно использовать заголовок Location — он указывает на адрес целевого сайта.

Чтобы настроить редирект PHP:

Впишите следующие строки:

Где http://site.ru/index1.php — ссылка на индексный файл страницы, на которую ведёт редирект. Если на конечном сайте установлен SSL-сертификат, вместо http:// укажите https://. После этого сохраните изменения:

Periodical readings PHP redirect

Готово, вы настроили редирект.

Как настроить редирект с задержкой

Иногда нужно, чтобы пользователь попал на страницу и только спустя несколько секунд перешел на конечный сайт. Такое перенаправление можно настроить в индексном файле с помощью функции sleep( ).

Чтобы настроить переадресацию с задержкой:

Где 5 — время ожидания в секундах.

Полный код редиректа с задержкой будет выглядеть так:

Источник

Php redirect url to url

В данной статье речь пойдет о том, как Вы можете организовать перенаправление, (или редирект, другими словами) программными средствами php. Следует отметить, что реализовывать перенаправление силами php, чаще всего имеет смысл, если требуется какая-то обработка пришедших данных, их модификация или проверка, по результатам которой происходит перенаправление. Именно такие реализации php редиректа я буду описывать в этой статье.

Основа php редиректа.

В основе редиректа на php лежит использование функции (справка):

Для того, чтобы осуществить непосредственный редирект, необходимо чтобы был указан специальный вид строки заголовка «location: …». Например, так:

в данном случае, после отправки заголовка, пользователь будет перенаправлен на любой сайт, указанный вместо «http://www.example.com/».

Важно отметить, что согласно спецификациии HTTP/1.1 необходимо в качестве аргумента «location» указывать абсолютный путь, с указанием протокола подключения (например: http), имени хоста (домен сайта) и пути назначения. Это требование прямо указано в справке по функции header().

Передача кода HTTP статуса при редиректе (301/302).

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

Второй способ принудительной передачи кода HTTP ответа – отправка строки заголовка иного вида, перед отправкой заголовка «location». В большинстве случаев это:

Однако, если на Вашем сервере включен режим FastCGI, то строка заголовка со статусом ответа должна быть несколько иной:

Php-редирект с условием.

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

Например, после авторизации пользователя идет обращение к базе данных с целью определения типа пользователя («администратор», «автор» или «читатель»), и в зависимости от того какой тип пользователя, происходит перенаправление в соответствующие разделы сайта. Саму авторизацию и извлечение данных рассматривать не будем, рассмотрим лишь способы организации проверки и отправки соотвествующего заголовка «location».

Мне представляется три наиболее логичных способа реализации такой возможности. Первый, заключается в последовательной проверке типа пользователя условиями «if … elseif …. else». Это может выглядеть примерно следующим образом:

Второй способ, связан с использованием конструкции «switch … case … ». Это может выглядеть примерно следующим образом:

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

Третий вариант, мне кажется наиболее красивым и простым.

Передача сессии при php-редиректе и отключенных куках в браузере клиента.

Если Вы в своих скриптах используете сессии, то при работе с функцией header() важно понимать ее некоторую особенность.

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

В интерпретаторе php для сессий такая ситуация предусмотрена. В этом случае при выводе ссылок и форм, php автоматически дописывает ко всем ссылкам и формам, ведущим на внутренние страницы сайта, идентификаторы сессии, которые при переходе по ссылке или при отправке данных с формы передаются на другую страницу сайта методом POST или GET. Таким образом на другой странице сайта, запускается сессия этого же пользователя, хотя куки у него отключены.

Проблема заключается в том, что для заголовков header(“location: …”) такая функция не предусмотрена. Если в браузере пользователя куки включены – то, как правило, никаких проблем с сессиями при header-редиректе не возникнет. А вот если – отключены, то сессия пользователя не сможет быть открыта заново на другой странице сайта (и пользователю, например, будет заблокирован доступ к контенту). Поэтому, в случае отключенных кук требуется вручную приписать идентификатор сессии к URL-адресу редиректа. Таким образом, идентификатор сессии будет передан методом GET:

Если у Вас этот параметр в значении «1», то чтобы не менять глобальные настройки сервера в php.ini, Вы можете в файле-приемнике (на который будет идти перенаправление), перед стартом сессии вставить код:

то есть локально, для данного файла, этот параметр перевести в значение «0». После чего выводите старт сессии:

Осталось лишь теперь достоверно знать: включены ли куки в браузере пользователя? И в зависимости от этого передавать или не передавать идентификатор сессии в виде GET-параметра запроса. Скрипт, с помощью которого можно определить доступность cookies в браузере пользователей Вашего сайта можно подсмотреть здесь.

Безопасность.

Редирект при переходе по внешней ссылке с сайта и скрытие реферальной ссылки.

По ряду причин, бывает выгодно все внешние ссылки с сайта сделать не прямыми, а пропустить редиректом через некий служебный файл Вашего сайта, возможно даже с задержкой на секунд 20-30. Это может быть выгодно, если Вы планируете зарабатывать на сайте с помощью различных бирж ссылок, так же отсутствие прямых внешних ссылок якобы улучшает индексацию сайта поисковыми системами. Хотя, это спорный вопрос. В конце концов, редирект внешних ссылок может быть интересен тем, кто не хочет «светить» посетителям своего сайта реферальные ссылки, для многих администраторов блогов это кажется важным.

В целом, принцип редиректа внешних ссылок можно изложить примерно таким образом. Вы создаете служебный файл редиректа (redirector.php), с примерно таким содержимым:

а в тексте статей Вашего сайта ссылки прописывать следующим образом:

И таким образом при каждом нажатии на ссылку, пользователь будет сначала переходить на файл redirector.php и тут же перенаправляться на тот URL, который указан в GET параметре «url» запроса.

Но, это лишь принцип. Сама по себе, приведенная реализация довольно топорна. Во-первых, по-хорошему нужно проверять регулярным выражением все, что приходит с GET-запросом. Во-вторых, по-хорошему нужно уберечься от того, чтобы никому не пришло в голову пользоваться Вашим файлом перенаправления, для того чтобы перенаправлять пользователей на свои сайты или на зараженные сайты. Ведь ничто не мешает такую же ссылку на этот файл опубликовать на любом другом блоге и это сработает. Это значит, что нужно как-то обезопаситься. Можно проверять параметр «REFERRER», чтобы убедиться что запрос пришел со своего сайта. Но, я точно знаю что этот параметр можно подделать – поэтому такая проверка не надежна. Да и вообще, писать ссылку и внутри этой ссылки в качестве GET-параметра еще одну ссылку – это как-то не красиво… В-третьих, если на Вашем блоге уже есть много внешних ссылок, то их всех придется переделывать руками – что очень не удобно. Я предпочитаю автоматизировать.

Поэтому мне видится другая, более красивая на мой взгляд реализация. Например, при создании новой статьи на Вашем блоге, вы можете совершенно спокойно публиковать в ней внешние ссылки «как есть». Но при выводе текста статьи на лицевой стороне сайта, воспользоваться php-функцией:

С помощью которой, можно осуществить глобальный поиск ссылок по всей статье. Если ссылка ведет на внешний ресурс, то саму ссылку записать в базу данных, а в тексте статьи заменить ее на синоним, который является ссылкой на redirector.php и в ней передать идентификатор исходной ссылки. В общем, код обрабатывающий текст статьи на выводе (или при сохранении статьи) может быть примерно такой (для ясности, специально вставил комментарии к каждой строке):

таким образом при выводе или при сохранении статьи, все внешние ссылки автоматически буду заменены на ссылку к скрипту redirector.php, в которой в качестве GET-параметра указан id ссылки. Скрипт можно усовершенствовать так, чтобы подставлялся не id ссылки, а транслитерация текста ссылки, что возможно будет более эффективно с точки зрения индексации ПС.

Сам скрипт redirector.php может содержать примерно такой код (с комментариями):

При этом структура таблицы «urls» этих ссылок в базе данных, такова:

php redirect url to url. Смотреть фото php redirect url to url. Смотреть картинку php redirect url to url. Картинка про php redirect url to url. Фото php redirect url to url

То есть, в таблице два поля: числовое поле url-id, значение которого генерируется автоматически при создании новой записи; и строковое поле url – собственно значение самой ссылки.

Таким образом, перейдя по ссылке в статье, пользователь гарантированно будет перенаправлен на внешний ресурс, который подразумевался под этой ссылкой. Плюс ко всему, нет необходимости переписывать руками все уже имеющиеся ссылки во всех статьях Вашего блога – они будут заменены «одним махом».

Кстати говоря, думаю не нужно объяснять, что работа приведенного кода не делает исключений для реферральных ссылок. Поэтому, это еще и хороший способ их скрыть, если Вам именно это необходимо.

Редирект с задержкой + Вывод обратного отсчета оставшегося времени.

Иногда на сайтах можно видеть при попытке перейти по внешней ссылке сообщение типа «Вы покидаете наш сайт. Вы будете переадресованы автоматически через N секунд.» и идет обратный отсчет секунд.

Вообще, есть как минимум 4 различных способа вызвать задержку перенаправления. Можно вызвать паузу в исполнении php-скрипта, непосредственно перед отправкой заголовка «location»:

задержка произойдет на 15 секунд. Но недостаток этого метода, в том что пользователь может быть введен в заблуждение, тем что ему придется эти 15 секунд ждать на той же странице, на которой он кликнул – выглядит так, будто бы ссылка не работает, а потом вдруг «бах» и перенаправило… Не очень удобно.

Второй способ: это немного модифицировать отправляемый заголовок, и вместо «location» написать:

задержка снова произойдет на 15 секунд, при этом визуально откроется страница, которую возвращает скрипт redirector.php, что может быть удобно для того чтобы вывести какую-то полезную информацию.

Третий способ, связан с выводом в разеле head html документа тега в нем же указывается время задержки и адрес перенаправления. Это может выглядеть примерно так:

Задержка также 15 секунд и при этом открывается страница, с которой непосредственно идет редирект на целевой адрес.

Второй метод связан с отправкой специфического заголовка, третий – выводом html в разделе head документа, а четвертый – с выводом javascript кода, в котором указывается целевой адрес и задержка в милисекундах. Например так:

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

Сам код скрипта таймера кратко разбирается в здесь. Остается только подключить предлагаемый код таймера обратного отсчета к скрипту перенаправления. На примере второго способа редиректа, из предложенных в этой статье, это может выглядеть примерно так:

Источник

Redirect to specified URL on PHP script completion?

How can I get a PHP function go to a specific website when it is done running?

I would really like the following.

I want to do something like this:

php redirect url to url. Смотреть фото php redirect url to url. Смотреть картинку php redirect url to url. Картинка про php redirect url to url. Фото php redirect url to url

php redirect url to url. Смотреть фото php redirect url to url. Смотреть картинку php redirect url to url. Картинка про php redirect url to url. Фото php redirect url to url

7 Answers 7

If «SOMETHING DONE» doesn’t invovle any output via echo/print/etc, then:

Note that this will not work:

You need to do this (for variable expansion):

don’t forget to put a ‘die’ after your call to make the redirect happen before the rest of the code on the page is run threw. a. if you have header functions further down the page they will override the ones further up the code.

b: im assuming you dont want the rest of the code on the page to be run and that why your putting this redirect in in the first place [maybe].

php redirect url to url. Смотреть фото php redirect url to url. Смотреть картинку php redirect url to url. Картинка про php redirect url to url. Фото php redirect url to url

Here’s a solution to the «headers were already sent» problem. Assume you are validating and emailing a form. Make sure the php code is the first thing on your page. before any of the doctype and head tags and all that jazz. Then, when the POST arrives back at the page the php code will come first and not encounter the headers already sent problem.

Not the answer you’re looking for? Browse other questions tagged php url or ask your own question.

Linked

Related

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.9.17.40238

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Как сделать редирект URL-адреса

Как сделать редирект URL-адресов с помощью PHP

Чтобы выполнить редирект с помощью PHP через определенное время:

Редирект на example.com выполняется через 5 секунд. Вы можете изменить это значение на необходимое.

Как сделать редирект URL-адресов с помощью JavaScript

Вот самый простой способ index html редиректа с помощью JavaScript :

Как сделать редирект URL-адресов с помощью HTML

Это называется meta-refresh редирект. Можно задать время ( в секундах ), изменив 10 на необходимое число. Обратите внимание, что этим методом редиректа часто злоупотребляют спамеры. Поэтому будьте осторожны, если вы реализуете его на общедоступном сайте.

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

Как сделать редирект URL-адресов с помощью Perl

Вот два способа редиректа URL-адресов с помощью Perl :

Как сделать редирект URL-адресов с помощью ASP (VB Script)

Как сделать редирект URL-адресов с помощью mod_alias Apache

Самый простой способ перенаправления на серверах Apache :

При необходимости можно изменить любой из этих параметров. Например, если нужно подставлять старый URL-адрес динамически, чтобы перенаправить все следующие URL-адреса :

Можно использовать RedirectMatch вместо Redirect :

Также можно изменить код статуса с 301 ( постоянный редирект ) на 302 ( временный редирект ). Или на любой другой действительный код состояния. Ниже приведено руководство по регулярным выражениям, используемым в методе RedirectMatch :

Как сделать редирект URL-адресов с помощью mod_rewrite Apache

Пример 1: Редирект с www на без www

Это называется канонизацией. Вот несколько примечаний о регулярном выражении, используемом в этом примере:

Пример 2: Редирект всего домена

Чтобы осуществить редирект HTML с текущего домена на новый:

Аналогично можно перенаправить запросы из поддомена текущего сайта на поддомен на новом сайте:

Вот несколько примечаний о регулярном выражении, используемом в этом примере:

Пример 3: Перенаправление всех файлов HTML и PHP

Вот еще один, более сложный пример скрипта редиректа HTML mod_rewrite :

Как сделать редирект ошибки 404 с помощью Apache

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

Источник

PHP Redirect To Another URL / Web Page Script Example

H ow do I redirect with PHP script? How can I use a PHP script to redirect a user from the url they entered to a different web page/url?

Tutorial details
Difficulty levelEasy
Root privilegesNo
Requirementsphp
Est. reading time1m

Under PHP you need to use header() to send a raw HTTP header. Using headers() method, you can easily transferred to the new page without having to click a link to continue. This is also useful for search engines. Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

HowTo redirect with PHP

The header() is used to send a raw HTTP/1.1 specification specific header. header() must be called before any actual output is sent, the following example will not work:

PHP Redirect with HTTP Status Code

Create a sample function called movePage() in sitefunctions.php (note I’m not the author of the following I found it somewhere else on the Internet):

First include sitefunctions.php and than call movePage() as follows:

How do I test url redirection?

If you are on MS-Windows or do not want to use command line try redbot tool:

Fig. 01: Check HTTP Location url redirection with redbot tool

🐧 Get the latest tutorials on Linux, Open Source & DevOps via

Comments on this entry are closed.

Cool post.
You can also do this using HTML or Javascript.

Using HTML META tag

Using Javascript function

Sorry, I guess the meta tags got removed

This is the meta tag

I’ve used this many times but on this particular site which I did not create a new window opens after a form submission. I’d like it to just come back to the page and not open a new window. Any suggestions? Thanks.

the nice thing about a redirect done in php is it is unstoppable. html or javascript redirects

@tab_Da_man: Not so true. lynx, for exmple, asks you if it should follow the redirect.

When I use this method to redirect I get a 403 error in the browser. AM I missing something?

Turned out to be a mod_security issue. It’s working now.

Using a meta tag for a redirect is quite “expensive”, especially for a busy website.

For a simple redirection, it’s much more efficient to use the mod_alias redirect functionality

Gah. The redirect example didn’t show…

This is the method which i am using now to pass values between two pages.
This is not a secure way.
Insted of that i want to “post” values while redirecting.

It will be helpfull to me..

I’m currently using Presta Cart and I want to re-write the order.php file to redirect certain item numbers to different websites BUT still allow items that aren’t included on the list to be sent to the normal online checkout.

If you think you can help me with this please send me an email I will get you all the info! Thanks

“how can i do to redirect all the 404 errors (Page not found) to the index of my website.”

ErrorDocument 404 /index.php

I want to show some data with using redirect script. It like this :

The Script I post before do not appear, maybe this work

I use this on my local connection.

not as good as Power Redirector but it’s free, thanks!

? I’d make a big bet that “Power Redirector” uses one of, if not all of, these methods. Sometimes getting down and dirty is where the real power is.

Thanks for advice, I’ll try to my website and done…

I have one question though. If the visitor clicks on back button then what happens? Where will he go?

Now working fine thnx……..

Can anyone please tell me what’s wrong with the following code:

As I get the very irritating “Warning: Cannot modify header information – headers already sent” message.

Data sending is not allowed with header……

nothing wrong i have tested your code

For future reference, can’t put any code before headers other than arjun Apr 23, 2011 @ 5:08

yeah you are correct you can use output buffering to send output before redirect

Hi, I am trying to lean some php/mysql + js. My problem is: I am trying to display php/mysql output on a mouseover. But when I use the below mention code, result is displayed in a new page instead of displaying in the same page. Hope you get what I mean… Than you in advance. Below is my code

I have an SVG map. When I mouseover map/Disctricts I want to display some images related to that district on side of the map. Therefore the images should not open in a new window.

I want to redirect to antoher page. I use this statement in my if condition.. EVERY TIME condiotin is true but this error occurs. I AM SICK OF THIS

Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\Unnamed Site 2\work\databasecon\dbcon.php:12) in C:\xampp\htdocs\Unnamed Site 2\work\save_userdata.php on line 23

Most of the guys who start their work in PHP end up with this problem at some point or the other… I could not reply to all the other posts.. This one in particular bugged me initially.

The header function can be used only if the page from which is routed has not modified even a single line in its page(i.e no echos used before it and no html tags before it) and many at times even when every thing is fine u end up getting this error..
The best alternative is that instead of the header function just echo a javascript tag which does the same job.

the sample usage is as shown below

is it possible to have an “if” function and if its true it redirects to that page.

Brilliant help. I am going to use javascript to make a url redirect since…

PHP keeps giving you a header error…i.e. headers have already been submitted.

good evening,
how to pass array variable from one page to another page with header function.
plz tell me immediately.
plzzzzzzzzzzzzzzzzzzzzzz

How to do changes in PHP page.

Thanks for this code it helps alot

I have a link website/#jump-to-bottom-of-page, this link actually takes me to my home page versus to the bottom of the page.. I have no clue on where to look to fix it..

When a person clicks on the link it should take them to the bottom… anyone have any clue on where to look to fix..

I guess I should strip the page of everything: headers, etc..

after dis hw can i redirect this page to another site?please someone finish my script…..

Warning: Cannot modify header information – headers already sent by (output started at H:\wamp\www\Pos-arif\admin\include\sidebar.php:21) in H:\wamp\www\Pos-arif\include\functions.php on line 19

Warning: Cannot modify header information – headers already sent by (output started at H:\wamp\www\Pos-arif\admin\include\sidebar.php:21) in H:\wamp\www\Pos-arif\include\functions.php on line 19

why this always dam show..

how to use java script in php. help me

use script tag in echo like this
echo “alert(‘Example :-use js in php’)”;

but how to write js code in php

Thanks I been looking for this 😀

im trying to find something that lets me put a hyperlink on my site and when it redirects it keeps them on my site and loads the other site under a nav bar type thing

I have a registration form that sends an email to me when it is submitted. Right now it goes to my home page but I want it to go to my thanks page.

Works great. Thanks!

Perfect, search it: “HTTP/1.1 410 Gone”

Im looking for a if else redirect code. Example of what I want to do:
To stop a user from entering a page directly via it’s URL, user must first agree to terms.
So lets say, agreement var=1 from first page
Second page looks for var=1 to continue loading page.
If var=0, redirect to first page.

@ Dwight. Please do tell your solution. I have the exact same issue.
I want to add people to MySql Database. This else command is for successfully signing up for the newsletter, and is the else command to send directly to the landing page I have created.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *