【PHP】301、302リダイレクトを実行する方法、metaタグで対応する方法も紹介!

PHP

過去記事の修正をちょっとずつ進めています。

当ブログは公開当初「PHPメモ」という名前で、PHPに関する記事ばかりを公開していたんですよね。今はWordPressを使ってますが、当時はSeesaaブログでした。

[voice icon=”https://thesaibase.com/wp-content/uploads/2019/09/db33c68ca43d933015ae9cd4b342eb88.png” name=”コフレちゃん” type=”l yel”]今回の記事は、2015年8月21日に公開したものを編集しています![/voice]

いつも忘れてしまうので、PHPで301リダイレクト302リダイレクトをおこなう方法を書いておきます。

PHPで301リダイレクト

HTTPレスポンスコードを「301」とします。

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

もしくは、header関数でステータスコードを指定してもOKです。

こんな書き方ですね↓

<?php
  header("Location: http://example.com/", true, 301);
  exit;

headerタグが動かなかった時などのために、念のためexitを記述しています。
 

PHPで302リダイレクト

302を明示的に指定しない場合は、「302」リダイレクト扱いとなります。

<?php
  header("Location: http://example.com/");
  exit;

 

「PHPマニュアル」に記載されている書き方

PHPマニュアル」に記載されているリダイレクトの書き方を引用します。

void header ( string $string [, bool $replace = true [, int $http_response_code ]] )

<?php
  // 301 Moved Permanently
  header("Location: /foo.php",TRUE,301);

  // 302 Found
  header("Location: /foo.php",TRUE,302);
  header("Location: /foo.php");

  // 303 See Other
  header("Location: /foo.php",TRUE,303);

  // 307 Temporary Redirect
  header("Location: /foo.php",TRUE,307);

【引用】PHPマニュアル – header https://secure.php.net/manual/ja/function.header.php

 

【参考】CakePHPでの301リダイレクト

CakePHPで301リダイレクトをする場合には、以下のような書き方で対応します。

<?php
  $this->redirect('/example', '301');

http://」から始めて、絶対パスを指定することも可能です。
 

[voice icon=”https://thesaibase.com/wp-content/uploads/2019/09/db33c68ca43d933015ae9cd4b342eb88.png” name=”コフレちゃん” type=”l yel”]いまやいろんなPHPフレームワークがあります[/voice]

【参考】 metaタグによる301リダイレクト

PHPではなく、HTMLのheadタグ内、metaタグでリダイレクトする場合の方法を書きます。

これなら、PHPなどのプログラムが分からない人でも対応できますね。

HTMLのheadタグ内に以下を記述してください。

<meta http-equiv="refresh" content="0; URL=http://example.com/">

content」の値で何秒後にリダイレクトするかを指定します。

0秒の場合301リダイレクト
秒数を指定した場合302リダイレクト

ただし、検索エンジンによっては正常に認識されない可能性もあるので、ご注意ください。
 

まとめ - 301リダイレクトと302リダイレクトとは?

301リダイレクトは、ページの変更やサイトの移転などでURLが恒久的に変更された場合の転送処理を行うステータスコードですね。

302リダイレクトは、一時的な転送の場合に使用します。

301リダイレクトであれば、被リンクなど元のページのSEO要因を引き継ぐとされていますので、SEO目的に合わせて慎重に使い分けるようにしましょうね。

タイトルとURLをコピーしました