はじめに
herokuにWebアプリをデプロイした場合、通常は「herokuapp.com」のようなherokuが管理しているドメインのサブドメイン(hoge.herokuapp.comなど)にアクセスすることでデプロイ先にアクセスできるのですが、各自で取得した独自ドメインも設定できるようになっています。
Herokuアプリに独自ドメインを設定&SSL化する. Herokuアプリケーションに独自ドメインを追加します。さらにSSLを実装して、… | by Koji Mochizuki | Medium
独自ドメインでのアクセスが可能になれば、元々の[herokuアプリ名].herokuapp.comでのアクセスはあまりさせないようにしたいし、SEO的にもあまりよろしくないようなので、今回は[herokuアプリ名].herokuapp.comでのアクセス時にリダイレクト処理を行うようにしたいと思います。
調べてみるとrailsでの記事はいくつかあったのですが、laravelの記事は見つけられなかったため、自前で実装してみました。
※railsでの例
[SEO対策] Railsでherokuapp.comを正しいFQDNへリダイレクトさせる - Qiita
【Rails】hoge.herokuapp.comへのアクセスをリダイレクトさせる - Qiita
コード
今回はmiddlewareを利用して、[herokuアプリ名].herokuapp.comでのアクセス時にリダイレクト処理を行うようにします。
protected $middleware = [
...
\App\Http\Middleware\HerokuDomain::class,
];
<?php
namespace App\Http\Middleware;
use Closure;
class HerokuDomain {
public function handle($request, Closure $next)
{
if (substr($request->header('host'), -13) === 'herokuapp.com') {
// ドメイン末尾がherokuapp.comのアクセスの場合、.envで指定したAPP_URLに遷移させる
return redirect()->away(config('app.url') . $_SERVER['REQUEST_URI']);
}
return $next($request);
}
}
終わりに
今回は思いつく限り簡単な実装で独自ドメインへのリダイレクト処理を行ってみました。
もっと他にいい方法があるよ!という方がいらっしゃいましたらコメントいただけると幸いです。