【PHP】PHPで301リダイレクトをする方法


リダイレクトの301や302とは?

リダイレクトの301や302は、HTTPレスポンスステータスコードという、リダイレクトの目的を明示的に表したものです。
301は、Webサイトの引っ越し等のURLが恒久的に変更された場合に使用されます。
302は、メンテナンス中等の一時的なURL変更の際に使用されます。
Google等のクローラーが、ステータスコードを判断して、検索順位に影響を与えるため、リダイレクトを行う場合は適切なステータスコードを設定します。

リダイレクトする方法

header関数でリダイレクトをします。
第三引数でステータスコードを設定します。
header関数以降も継続して処理が続くため、exit関数で処理を終了させましょう。

<?php
header('Location: リダイレクト先URL', true, 301);
exit();

header関数でよくあるエラー

例1

header関数より前にHTMLが出力されている

<h1>header関数</h1>
<?php
header('Location: リダイレクト先URL', true, 301);
exit();

例2

Locationと:の間に空白がある

<?php
header('Location : リダイレクト先URL', true, 301);
exit();

例3

header関数の前に空白行がある

<?php

header('Location : リダイレクト先URL', true, 301);
exit();