-1

PHPヘッダー関数を使用してHTTP 410ステータスを使用してページをリダイレクトしようとしています

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 リダイレクトが表示されますが、リダイレクトされたページには何も表示されません。空白のページが表示されます。

これに対する解決策があるかどうか誰かが知っていますか?

4

5 に答える 5

8

410 エラーは、Web サーバーに URL の転送アドレスがないため、新しい Web サーバーへのリダイレクトを提供できないことを示しています。したがって、2 番目のスニペットを使用して取得した空白のページは正しいものです。最初のコード スニペットでも正しい結果が得Locationられます。指定されたアドレスへのリダイレクトが作成されます。したがって、コードまたは PHP にエラーはありません。本当に必要なことをしているかどうかわかりません=)

于 2011-09-28T10:17:49.580 に答える
1
header('Location: http://domain.com/down.php', true, 410);
exit;

動作するはずです。URLのプロトコルを忘れてしまいました。
その上、AFAIU、Yoは使用できます

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

しかし、リダイレクトと4xx HTTPステータスが必要ですか?

于 2011-09-28T10:20:21.507 に答える
1

最後のヘッダー行は、ステータス コードを設定する正しい方法です。

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;

特に410 応答コードRFC 2616の場合のように、ユーザー エージェントがLocationヘッダーを自動的に追跡する必要がないため、応答本文を提供すると便利です。Location

301 Moved Permanentlyを探しているのかもしれません。

于 2011-09-28T10:15:32.283 に答える
0

適切な引用符を使用してみてください。

header("HTTP/1.1 410 Gone");
header("Location: http://domain.com/down.php");
exit;
于 2011-09-28T10:14:32.533 に答える