web-dev-qa-db-ja.com

PHPヘッダーリダイレクト301-影響は何ですか?

domain.comがあります。ユーザーがログインしている場合、自動的にロードされるはずですdomain.com/option-Xここで、Xはユーザーの事前定義された選択です。

だから、私はindex.phpの上部でこれを行います:

header("Location: /option-X"); 

ただし、ユーザーがログインしていない場合は、次のような最初のオプションを自動的に選択します。

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: /option-a"); 

だから、そうすることの意味に関して2つの質問があります:

  1. 検索エンジンのクローラーはログインしないため、常にdomain.com/option-aを取得します-301ヘッダーがあることは影響しますか?
  2. これらのリダイレクトを行うサーバーCPUの負荷はどうなりますか?それをテストする方法がわかりません。現在のサイト(リダイレクトがない)には、毎日約10万の訪問があります。
44
Andres SK

301の効果は、検索エンジンが/ option-xではなく/ option-aをインデックス付けすることです。/option-xは検索インデックスに到達できず、インデックスにプラスの影響を与える可能性があるため、これはおそらく良いことです。これを賢く使う場合のみ;-)

リダイレクト後、exit()を配置します。実行する残りのスクリプトを停止する

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: /option-a"); 
exit();
90
Roel Veldhuizen

これの方が良い:

<?php
//* Permanently redirect page
header("Location: new_page.php",TRUE,301);
?>

コード301を含む1回の呼び出し。同じディレクトリ(「/dir/dir/new_page.php」などではない)内のファイルへの相対パスにも注意してください。

PHP 5.1.2、おそらく以前のバージョンです。

28
Gary Samad

ちょっとしたヒント: http_response_code を使用すると、完全なヘッダーを書くよりも覚えやすくなります。

http_response_code(301);
header('Location: /option-a'); 
exit;
6
the_nuts

301などの検索エンジンは、404や他の種類のクライアント側リダイレクトよりも優れており、心配ありません。

CPU使用量は最小限に抑えられます。htaccessを使用してApacheでリダイレクトを試行して処理できるサイクルをさらに節約したい場合は、phpが関与する必要さえありません。サーバーの負荷テストを行う場合は、Apacheに付属のabを使用できます。より堅牢なテストツールを探している場合は、httperfを使用できます。

4
profitphp

リダイレクト後は必ずdie()を実行し、スクリプトの実行中はできるだけ早くリダイレ​​クトを実行してください。これにより、データベースクエリ(もしあれば)が無駄に無駄にならないようにします。それは私があなたに与えることができる1つのヒントです

検索エンジンの場合、301が最適な応答コードです

3
genesis