パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

301リダイレクトを最低1年維持すればGoogleから見た価値は全てリダイレクト先に渡る」記事へのコメント

  • 意外と知らない人が多いのですが、Google Chrome は 301 リダイレクトを永久キャッシュします。
    永久というのは1年先でも2年先でも、ユーザーがブラウザのキャッシュを削除しない限り、リダイレクト元がどうなっていようがリダイレクト先にアクセスしてしまうということです。

    リダイレクト元へのHTTPサーバへのアクセスは勿論、DNSリクエストすら発生しません。

    となると、もし間違って301リダイレクトしてしまうと、それが永久キャッシュされてしまい、取り返しがつかなくなります。
    (間違った設定の期間にアクセスした人は、永遠に間違ったリダイレクトがされてしまい、正しいリダイレクト先にアクセスできなくなります)

    Ctrl + F5 でスーパーリロードしても、リダイレクト先がリロードされるだけなので無駄です。
    ユーザにキャッシュ削除させるしか事実上の救済先がなく、サイトオーナーの立場ではどうしようもならなくなります。

    また、例えば数か月後に、元あるドメインに戻そうとした場合とか、URL構成変更などを行った場合でリダイレクト前のURLを再利用したいときとかにも支障が生じます。
    (ただし、元のURLに対して301リダイレクトをした場合には、最初のリダイレクトキャッシュはクリアできます。
     そのため、現存しないリダイレクトキャッシュによる無限リダイレクトは発生しませんし、リダイレクト元へリダイレクトすることとでリダイレクトキャッシュを無効化することは可能です)

    ということで、リダイレクト元のURLを再利用する可能性が少しでもある場合には、下記のように "Cache-Control: no-store" ヘッダーを書いておくことをおすすめします。
    こうすれば、Google Chrome でもリダイレクトがキャッシュされないことを最新版で確認済みです。no-cache では駄目でした。

    // phpの場合のコード
    // こうすれば Google Chrome のリダイレクトのキャッシュを回避できます
    http_response_code(301);
    header('Cache-Control: no-store, no-cache'); // Google Chrome は no-cache だけでは永久キャッシュしちゃいます
    header('Location: 'https://example.com/');

    逆に、リダイレクト元のドメインを譲渡・販売するときなんかは、no-store 無しでリダイレクトするとおトクです。
    301 リダイレクトが永久キャッシュされるので、リダイレクト前にアクセスしたユーザに対しては、新しいドメインオーナーのコンテンツは表示されずに、自分のサイトに誘導し続けることができます。

    • "301 Moved Permanently" なんだから当然の動作では?
      永久キャッシュが嫌なら "302 Found" か "307 Temporary Redirect" を使用すればよいだけです。

      親コメント
      • by Anonymous Coward

        元あった物が新しい場所に移動したことを示すだけで、今後その場所がずっとただの跡地であり続けるとは言ってないだろ

      • by Anonymous Coward

        ドメインを跨ぐリダイレクトなら、永久キャッシュにも古いドメインが廃止になってもユーザがアクセスできるというメリットがあると思います。
        けど、問題なのは同一ドメインのリダイレクトでも永久キャッシュされてしまうんですね。

        ショッピングサイトが2020年のサマーキャンペーンをやったとします。
        https://example.com/campaign/ [example.com]

        キャンペーン期間が終わりましたが、過去のキャンペーンの細則を確認できるように301リダイレクトをしました。
        https://example.com/campaign/ [example.com] → https://example.com/old-campaign/2020-summer/rules [example.com] (301リダイレクト)

        そして、2021年のお正月に新しくお正月キャンペーンを下記のURLで始めたとします。
        https: [example.com]

        • by Anonymous Coward

          301は「ブラウザのブックマークを書き換えろ」って意味も含んでるので、そんなに気軽に使っていいものじゃないよ。同じURIを再利用するのは論外。

        • by Anonymous Coward

          # 永久キャッシュは凄く迷惑な仕様だと思います。

          301は"Moved Permanently"、「永久的な移動」でしょう?
          「永久にリダイレクトする」ではなく、「ターゲットリソースの位置が永久に移動した」という意味です。
          (その意味に従い、ブラウザはリダイレクトしたり、ブックマークを書き換えたりする)
          根本的に、使い方を間違えているだけだと思います。

          そもそも、RFCに「メソッド定義や明示的なキャッシュ制御がないかぎり、規定値としてキャッシュ可能」とありますし。

          Hypertext Transfer Protocol (HTTP/1.1) [ietf.org]

    • by Anonymous Coward

      Chromeがそういう仕様ってことは新Edgeも同様なのかな?

    • by Anonymous Coward

      Firefoxもそうですよ。

      • by Anonymous Coward

        むしろそうじゃないブラウザーって何? IE?

        • by Anonymous Coward

          確かめなおしていないのであれですがIEもキャッシュしていた気がしますねぇ。

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

処理中...