過去記事の修正をちょっとずつ進めています。
当ブログは公開当初「PHPメモ」という名前で、PHPに関する記事ばかりを公開していたんですよね。今はWordPressを使ってますが、当時はSeesaaブログでした。
いつも忘れてしまうので、PHPで301リダイレクト、302リダイレクトをおこなう方法を書いておきます。
目次
PHPで301リダイレクト
HTTPレスポンスコードを「301」とします。
もしくは、header関数でステータスコードを指定してもOKです。
こんな書き方ですね↓
headerタグが動かなかった時などのために、念のためexitを記述しています。
PHPで302リダイレクト
302を明示的に指定しない場合は、「302」リダイレクト扱いとなります。
「PHPマニュアル」に記載されている書き方
「PHPマニュアル」に記載されているリダイレクトの書き方を引用します。
void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
【引用】PHPマニュアル - header https://secure.php.net/manual/ja/function.header.php
【参考】CakePHPでの301リダイレクト
CakePHPで301リダイレクトをする場合には、以下のような書き方で対応します。
redirect('/example', '301');
「http://」から始めて、絶対パスを指定することも可能です。
今はいろんなPHPフレームワークがありますね。
【参考】 metaタグによる301リダイレクト
PHPではなく、HTMLのheadタグ内、metaタグでリダイレクトする場合の方法を書きます。
これなら、PHPなどのプログラムが分からない人でも対応できますね。
HTMLのheadタグ内に以下を記述してください。
「content」の値で何秒後にリダイレクトするかを指定します。
0秒の場合
301リダイレクト
秒数を指定した場合
302リダイレクト
ただし、検索エンジンによっては正常に認識されない可能性もあるので、ご注意ください。
まとめ - 301リダイレクトと302リダイレクトとは?
301リダイレクトは、ページの変更やサイトの移転などでURLが恒久的に変更された場合の転送処理を行うステータスコードですね。
302リダイレクトは、一時的な転送の場合に使用します。
301リダイレクトであれば、被リンクなど元のページのSEO要因を引き継ぐとされていますので、SEO目的に合わせて慎重に使い分けるようにしましょうね。