- リンクを取得
- ×
- メール
- 他のアプリ
Laravel 5では、以下のコマンドを実行することでアプリケーションをメンテナンスモードに切り替えることができます。
php artisan down
このコマンドを実行すると、アプリケーション全体がメンテナンスモードに入り、通常のユーザーはアクセスできなくなります。しかし、メンテナンスモード時の挙動をカスタマイズしたい場合があります。例えば、特定のIPアドレスからのアクセスを許可したり、メンテナンスページの内容を変更したりすることが考えられます。
Laravelの標準ドキュメントには、メンテナンスモードの挙動を変更する具体的な方法は記載されていませんが、以下の手順でカスタマイズが可能です。
1. ミドルウェアの生成
まず、カスタムミドルウェアを作成します。このミドルウェアは、メンテナンスモード時に特定の挙動を制御するためのものです。
php artisan make:middleware CheckForMaintenanceMode
このコマンドを実行すると、app/Http/Middleware
ディレクトリにCheckForMaintenanceMode.php
というファイルが生成されます。
2. app/Http/Kernel.php
の編集
次に、生成したミドルウェアがアプリケーションで使用されるように設定します。app/Http/Kernel.php
を開き、CheckForMaintenanceMode
のパスを変更します。
変更前:
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode'
変更後:
'App\Http\Middleware\CheckForMaintenanceMode'
3. CheckForMaintenanceMode.php
の編集
続いて、生成されたCheckForMaintenanceMode.php
を編集し、メンテナンスモード時の挙動をカスタマイズします。以下は、特定のIPアドレスからのアクセスを許可する例です。
<?phpnamespace App\Http\Middleware; use Closure; use Illuminate\Contracts\Routing\Middleware; use Illuminate\Contracts\Foundation\Application; use Illuminate\Http\Request; class CheckForMaintenanceMode implements Middleware { protected $app; protected $request; public function __construct(Application $app, Request $request) { $this->app = $app; $this->request = $request; } public function handle($request, Closure $next) { // メンテナンスモードかどうかをチェックし、許可されたIPからのアクセスを除外 if ($this->app->isDownForMaintenance() && !in_array($this->request->getClientIp(), ['【通したいIPアドレス】'])) { return response('Be right back!', 503); // メンテナンス中のレスポンス } return $next($request); } }
このコードは、アプリケーションがメンテナンスモードになっているかどうかを確認し、許可されたIPアドレスからのリクエストのみを通過させます。それ以外のリクエストには「Be right back!」という503ステータスコード付きのレスポンスを返します。
4. カスタマイズの適用
CheckForMaintenanceMode.php
を必要に応じて修正したら、これでカスタマイズが完了です。例えば、許可するIPアドレスのリストを変更したり、メンテナンスモード中のメッセージを変更したりできます。
参考サイト
この方法について詳しくは、以下のサイトも参照してください。