301・302リダイレクトの違いを解説します

今回は、301リダイレクトと302リダイレクトの違いについて解説していきます。

ちなみに303というのもあって、さらに307と308もあるんです。

この5つについて、順番に説明していきたいなと思います。

リダイレクトとは?

「5秒後にこのページを転送します」を見たことはありませんか

まず、301リダイレクトが何かという話からです。

ホームページなどを見ているときに、「5秒後にこのページを転送します」みたいな案内が出てきたことはありませんか?

真っ白なページに文字だけが書いてあって、5秒間ほど待つか、「待ちきれないなら、ここをクリックしてください」と案内されることがありますよね。

5秒後の自動転送案内ページ

その「0秒版」が301リダイレクトです

あの0秒版が301リダイレクトです。

廃盤になった製品ページの例

例えば、とある製品のページがあったとして、その製品が廃盤になったとします。

同じシリーズで新しいものを登場させたから、古いページにアクセスしたら、新しいページに自動で転送させるようにしてほしい。そういうときに使うわけです。

だから、製品Aのページから製品Bのページへ、0秒でリダイレクトされる。このときに使うのが301リダイレクトという技術で、要は転送させることですね。

身近な事例として、PHPの脆弱性問題がありました

他にも身近な事例でいうと、この間のPHP問題です。高市首相も言っていましたけれども、PHPに脆弱性が発見されたという話ですね。

高市首相、PHP緊急警告!

弊社もかなり忙しくしていたんですけれども、PHP問題の影響です。

メンテナンス中のページに飛ばすときにも使います

サイトが弱い状態で公開していると攻撃されるかもしれないので、「一時的に今メンテナンス中です」ということで、サービスを停止していたところがたくさん出てきました。

そういうときに、例えばURLで「〇〇.com」というトップページがあったとして、あらゆるページにアクセスすると、一時的にメンテナンス中のページに移動させるわけです。

具体的には、「〇〇.com/メンテナンス」のようなメンテナンスのお知らせページに移動させるんですね。

こういうときも、本体のページにアクセスしたらメンテナンスページに一瞬で移動してほしいので、301・302リダイレクトで対応することになります。

では、これをどう使ったらいいのか。詳しく解説していきます。

301と302の違い

まず301リダイレクトは「永遠に移動」

301と302がセットになっていると考えてください。

まず301リダイレクトは、「永遠に移動」という意味です。

Aページの役割をBページに移動した。それが永遠ですよというときに、301リダイレクトを使います。

302リダイレクトは「一時的に移動」

302は、「一時的に移動」という意味です。移動というか、転送ですね。

301と302の違い

今回の高市さんの件でサービスを停止していたときは、この「一時的に移動」である302が当てはまっているわけです。

メンテナンス中なら、302が正しい

つまり、メンテナンス中という一時的な移動なのだから、302を使うのが正しいということになります。

多くの会社が、ここで301を使ってしまっていたんですね。

Googleは301か302かを見て、意味を理解しています

なぜこれが問題になるかというと、リダイレクトをさせるときに、Googleが読み取りに来るんです。

そして、転送しているのが301なのか302なのかをGoogleが見ることによって、「あ! 一時的なのね」「あ! これはもう永遠なのね」と、そういう認識をGoogleがしてくれるわけです。

お客さんから見た挙動は、どちらでも同じです

ここがポイントなんですけれども、お客さんの挙動は一緒なんです。

とあるページにアクセスしたら次のページに飛ばされる。どっちでも一緒の挙動ではあるんですよね。

けれども、Googleに伝える意味として違いがあるのが301と302ということです。

設定ミスは問題ないのか

本来301にすべきなのに302にしてしまっている、ということは起きているのか

では、本来であれば301にしなければいけないのに302にしてしまっている。そういった問題が起きているのでしょうか。

実際には「302の存在を知らなかった」というケースがあります

厳密には各社によって分かりませんけれども、302の存在を知らないで、301で対応したというのはあります。

このような間違いを防ぐには、知識を入れるしかありません

では、このような間違いが起こらないようにするにはどうすればいいか。

知識を入れるしかないんですよね。

ただ、301・302以外にも303・307・308がありますから、なかなか大変です。

Googleの公式見解は「重大なミスにはならない」

ここで安心していただきたいのが、Googleの公式見解です。

できれば正しくやってほしいけれども、これを間違えたからといって、取り返しのつかないような重大なミスのレベルにはならない。

302でやらないといけないのに301でやったとか、301でやらないといけないのに302でやったみたいなことをしても、「安心してね」というのはGoogleが言っているんです。

間違えても大問題にはならないけれど、できればこうしてほしい。これがGoogleの見解ということですね。

303・307・308の違い

301と308、302と307が同じ意味合いです

続いて、301・302がセットだという話をしましたけれども。

これは実は厳密には違うんですけれども、301=308、302=307という形で、同じ意味合いになっています。

308は永遠の移動。307は一時的な移動です。

4つのリダイレクトの関係

番号の並びが逆なのが、ちょっと分かりにくいところ

正直なところ、301と307、302と308という組み合わせだったら分かりやすかったなと思うんですよね。番号の並びが逆になっているわけです。

ただ、意味が一緒だから、どっちを使っても大丈夫です。

なぜ307・308があるのに301・302も残っているのか

ここからは専門的な話になるんですけれども。

307・308で良いなら、なぜ301・302もあるのか。その逆も然りですよね。

301・302が先にできて、問題を抱えていたからです

答えはこうです。301・302が最初に出たんです。だけど、問題を抱えていた。

だから、新しく307・308を作ったというわけです。

違いは「データを持ち運びできるかどうか」

では、307・308と301・302は何が違うのか。

すごく簡単に説明すると、データを持ち運びできるのが307・308。持ち運びが安定しないのが301・302です。

もう少し正確に言うと、307・308はHTTPの送信方法とリクエスト本文を維持して転送するという仕組みになっています。

買い物カートの例で考えてみましょう

例えば、買い物をしているときのことを考えてみてください。

商品をカートに入れていって、カートページを見て、この商品を実際に注文するとなったときに、「購入ページへ進む」ボタンを押しますよね。

あれって、ページが切り替わっているのに、購入ページに行ったらちゃんとカートの情報を引き継いで表示してくれているじゃないですか。

あれがデータの引き継ぎなんです。ページの移動の間で、引き継ぎができているわけですね。

カートから注文確認へデータ引き継ぎ

データを引き継ぎたいリダイレクトなら307・308

だから、リダイレクトするときにデータを引き継ぎたい。そういうときに307・308を使うということになります。

逆に「荷物を持っていってほしくない」ときが303

そして逆に、荷物は絶対に持っていってほしくない。そういうときに使うのが303です。

303・307・308をうまく使い分ければOK

つまり、303・307・308をうまく使い分ければOKということですね。

もちろん、これまで通り301・302を使っても問題ないというお話でした。

まとめ

詳しくない人には、混乱しやすい話だと思います

301・302の間違いがあったという話をしたときに、「なぜこれだけで間違えるんだろう」と思うかもしれません。

でも、そこに308・307も出てきて。詳しくない人からしたら混乱になるなというのは、私自身も思いました。

これだけあったら「何を使っていいの?」となりますし、Googleの公式見解も気になりますし、307・308を知らない人もいるわけです。

前提として、どれを使っても重大なことにはなりません

ただ、前提としてGoogleは「どれを使ってもそんな重大なことにはならないですよ」とは言っているんです。

できれば使い分けできるといい、というくらいですね。

PHP問題で話題になったからこそ、解説してみました

この間、PHP問題で高市首相がポストしたこともあって、かなり話題になっていました。

それに伴って、301・302というのも一般の方でも出回ったキーワードだと思っていたので、どういう違いがあるのかを分かりやすくするために解説してみました。

おわりに

今後もこういったウェブの技術だったり、最新情報に関する発信を日頃からしております。

最後までお読みいただき、ありがとうございました。