Как я могу определить, перенаправляет ли URL-адрес в PHP?

Я видел, как кто-то задавал вопрос об обнаружении перенаправления URL-адресов с Groovy и Perl, но не смог ничего найти на PHP.

Кто-нибудь знает, где я мог бы найти этот код, который делает это?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
10
0
7 557
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

$ch = curl_init('http://www.yahoo.com/');
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (($code == 301) || ($code == 302)) {
  //This was a redirect
}

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

GeoffreyF67 09.01.2009 09:13

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

alex 09.01.2009 09:39

Хороший ответ, который должен охватывать почти все возможные случаи. Я считаю, что 303 и 307 также представляют собой перенаправления, хотя они гораздо менее распространены - я видел их только в спецификациях, а не в реальном мире.

Chris Burgess 10.01.2009 12:51

Стоит отметить, что вы захотите добавить curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);, если хотите сделать что-то вроде $data = curl_exec($ch) вместо отправки результатов в браузер.

degenerate 17.02.2014 07:55
Ответ принят как подходящий

На самом деле, мне показалось, что это работает лучше всего:

    function GetURL($URL)
    {
            $ch = curl_init($URL);

            curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);


            curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

            curl_exec($ch);

            $code = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

            curl_close($ch);

            return $code;
    }

Помните, что ни один из ответов, которые обычно даются на этот вопрос, не учитывает перенаправление, вызванное javascript, закодированным в возвращенном документе (или, я думаю, тегом мета-обновления в HTML). Так что вполне возможно, что что бы вы ни пропустили определенные виды «редиректов» при тестировании с использованием такого кода.

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

Ваше здоровье!

На самом деле, вы можете использовать движок javascript, который есть в Mozilla, хотя я не могу вспомнить его название в данный момент. Но да, вы правы в том, что curl не улавливает перенаправление javascript.

GeoffreyF67 27.01.2009 08:48

Другие вопросы по теме