🦁
LaravelアプリをHerokuから移設するときのリダイレクト方法
Google Search Consoleでアドレス変更
Google Search Consoleでアドレス変更を申請しようと手順に沿っていくと元サイトから新サイトへのリダイレクトのチェックが入ります。
注: 最初に 301 リダイレクト ディレクティブを設定しないと、アドレス変更リクエストは正しく機能しません。
Herokuは.htaccessでサクッとはできない
以下の記事でまとめられていますが、Apacheでもいけるみたいですね。
アプリ側でやったらサクッとできるのか?
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