HTTP 301ステータスコード


要求されたリソースは新しい場所に永久に移動されました。今後このリソースを参照する場合は、この応答で返されたいくつかの URI の 1 つを使用する必要があります。可能であれば、リンク編集機能を持つクライアントは、要求されたアドレスをサーバーから返されたアドレスに自動的に変更する必要があります。特に指定がない限り、この応答もキャッシュ可能です。

新しい永続 URI は、応答の Location フィールドで返される必要があります。これが HEAD リクエストでない限り、応答エンティティには新しい URI へのハイパーリンクと簡単な説明が含まれている必要があります。

これが GET または HEAD リクエストではない場合、リクエストの条件がそれに応じて変更される可能性があるため、ユーザーが確認しない限りブラウザは自動リダイレクトを禁止します。
注: HTTP/1.0 プロトコルを使用する一部のブラウザでは、送信した POST リクエストが 301 レスポンスを受信すると、後続のリダイレクト リクエストは GET メソッドになります。

php を使用して 301 を実装します:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.xxx.com");

302 と 301 の違いは何ですか[推奨読書: HTTP 302 ステータス コード]

301、302 はユーザーにとって何の違いもありませんが、その効果は単なるジャンプであり、ブラウザ内の古い URL が新しい URL になることがわかります。ページは、この新しい URL が指す場所にジャンプします。エンジンとウェブマスターにとって、302 リダイレクトには URL 正規化と URL ハイジャックに関する問題が発生する可能性があります。検索エンジンによって不審なリダイレクトと判断されたり、不正行為とみなされる可能性があります。