Страница перенаправления PHP с проблемой кода состояния - PullRequest
0 голосов
/ 28 сентября 2011

Я пытаюсь перенаправить страницу, используя статус HTTP 410, используя функцию заголовка php как

header("HTTP/1.1 410 Gone");
header('Location: http://domain.com/down.php');
exit;

Проблема в том, что даже если я установлю код состояния 410 ... код состояния автоматически изменится на 302

Я также пытался с

header('Location: domain.com/down.php', true, 410);
exit;

Показывает перенаправление 410, но перенаправленная страница ничего не показывает. Показывает пустую страницу.

Кто-нибудь знает, есть ли решение для этого?

Ответы [ 5 ]

8 голосов
/ 28 сентября 2011

Ошибка 410 указывает на то, что у веб-сервера нет адреса переадресации для URL, поэтому он не может перенаправить новый веб-сервер. Таким образом, пустая страница, которую вы получили, используя второй фрагмент, верна. Первый фрагмент кода также дает правильный результат - Location создает перенаправление на заданный адрес. Так что нет ошибок в вашем коде или в PHP. Я не уверен, что вы делаете то, что вам действительно нужно =)

1 голос
/ 28 сентября 2011

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

header('Location: domain.com/down.php', true, 410);

Однако для имени заголовка Location требуется полный URL-адрес, ваш URL-адрес выглядит неполным.Это недопустимо.

Кроме того, вы не отправляете тело HTTP-ответа, поэтому браузер может отображать только пустую страницу.Чтобы отобразить непустую страницу, укажите тело ответа:

header('Location: http://domain.com/down.php', true, 410);
echo '<h1>Gone.</h1><a href="http://domain.com/down.php">here.</a>';
exit;

Предоставление тела ответа полезно, потому что пользовательским агентам не нужно автоматически следовать Location заголовкам, особенно как с код ответа 410 RFC 2616 , HTTP-клиент не ожидает заголовок ответа с именем Location.

Возможно, вы ищете 301 перемещено навсегда .

1 голос
/ 28 сентября 2011

Попробуйте использовать правильные кавычки?

header("HTTP/1.1 410 Gone");
header("Location: http://domain.com/down.php");
exit;
0 голосов
/ 31 августа 2016

Вы должны включить страницу с ошибкой:

header("HTTP/1.0 410 Gone"); include_once("410.html"); exit();
0 голосов
/ 28 сентября 2011
header('Location: http://domain.com/down.php', true, 410);
exit;

Должно работать. Вы забыли о протоколе в URL.
Кроме того, AFAIU, Йо может использовать

header('Location: 'http://domain.com/'down.php');
header("HTTP/1.1 410 Gone");
exit;

Но Вы уверены, что вам нужен статус Redirect и HTTP 4xx?

...