🦁

LaravelアプリをHerokuから移設するときのリダイレクト方法

2021/09/23に公開

Google Search Consoleでアドレス変更

Google Search Consoleでアドレス変更を申請しようと手順に沿っていくと元サイトから新サイトへのリダイレクトのチェックが入ります。

注: 最初に 301 リダイレクト ディレクティブを設定しないと、アドレス変更リクエストは正しく機能しません。

https://support.google.com/webmasters/answer/83106?hl=ja

Herokuは.htaccessでサクッとはできない

以下の記事でまとめられていますが、Apacheでもいけるみたいですね。

http://kayakuguri.github.io/blog/2016/09/01/heroku-cgi-bin-redirect/

アプリ側でやったらサクッとできるのか?

Laravelでやってみましょう
作るクラスはこちらの1つで、middlewareからリクエストをそのまま新サイトに飛ばしちゃうだけです

<?php

namespace App\Http\Middleware;

use Closure;

class ForceRedirect {

    public function handle($request, Closure $next)
    {
        return redirect()->to('https://your.new.domain.com' . $request->getRequestUri(), 301, [], $secure = true);
    }
}

Redirect::toの引数はurl, Http status, ヘッダ、httpsを使うかの4つで、必要に応じて変更してください。

protected $middleware = [
  \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
  \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
  \App\Http\Middleware\TrimStrings::class,
  \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
  \App\Http\Middleware\TrustProxies::class,

  // Add below
  \App\Http\Middleware\ForceRedirect::class
];

Conclusion

上記をHerokuに反映したらGoogle Search Consoleの移設手順もすすめます!

リダイレクト以外で引っかかったのは、リダイレクトされるからヘッダに入れといたmetaタグをSearch Consoleが読み込めず権限ないよって移設のチェックでエラーになるので、旧サイトの権限チェックのmetaタグなりhtmlなりは新サイトに配置しておく必要があります!

Discussion