每个http请求的默认路由

时间:2017-10-20 11:00:12

标签: php laravel routes

我需要为我的网络应用设置一个默认功能,为每个http请求返回维护视图。

我做到了:

Route::group(['prefix' => '/'], function() {
     return view('maintenance');
});

但是当我以http://www.mypage.com/profile为例时 它有效。

我应该如何设置路线?

谢谢。

3 个答案:

答案 0 :(得分:0)

使这最简单的方法可以将整个网站带入维护模式(因为我不确定这是一次还是单独的每一页)。

您可以使用数据库执行以下操作:

php artisan make:migration create_maintenance_mode_table --create=maintenance_mode

在此文件中添加一个简单的:

$table->integer('enabled')->default(0);

然后运行php artisan migrate

然后设置模型:

php artisan make:model Maintenance

在此文件中添加:

protected $table = 'maintenance_mode';

protected $fillable = [ 'enabled' ];

在此之后我们需要设置中间件:

php artisan make:middleware CheckMaintenanceMode

在此文件处理函数中,您需要添加:

$maintenance = Maintenance::select('enabled')->get()->first();

        if ($maintenance->enabled == 1)
        {
            return view('maintenance');
        }

        return $next($request);

在kernel.php文件中添加$routeMiddleware

'maintenance' => \App\Http\Middleware\CheckMaintenanceMode::class,

您现在需要设置视图文件:maintenance.blade.php

现在,在路线文件中,您需要在所有其他路线请求周围添加以下内容:

Route::group(['middleware' => ['maintenance']], function () {
    // Other Routes
});

看起来相当长的啰嗦,你可以用其他方式做到这一点,但这是我在自己的项目中使用的。

答案 1 :(得分:0)

为什么不使用集成维护模式?

php artisan down

禁用维护模式

php artisan up

要排除您的IP以继续开发,您可以尝试使用此中间件

class CheckForMaintenanceMode {
protected $app;

public function __construct(Application $app)
{
    $this->app = $app;
}

public function handle($request, Closure $next)
{
    $white = $_ENV['MAINTENANCE_WHITELIST'];        // Get WhiteListed IP from .ENV
    $ip = $request->ip();                           // Get Visior IP with no Proxy (like Cloudflare)
    // $ip = $_SERVER["HTTP_CF_CONNECTING_IP"];         // Get Real Visitor IP with CloudFlare enabled
    if ($this->app->isDownForMaintenance() &&
        !in_array($ip, [$white]))               
    {
      $maintenanceMode = new MaintenanceMode($this->app);
      return $maintenanceMode->handle($request, $next);
    }
    return $next($request);
}}

别忘了将中间件添加到/app/http/kernel.php

protected $middleware = [
   ...
   \App\Http\Middleware\CheckForMaintenanceMode::class,
   ...
];

答案 2 :(得分:0)

Laravel没有

的维护模式支持
  1. 在命令行中执行 php artisan down 以启用维护模式(您可以使用php artisan up,以禁用维护)

  2. 如果你不想使用工匠。你可以创建' down'在存储/框架/向下手动文件以启用维护或将其删除以禁用

  3. 此外,您可以在resources / views / errors / 503.blade.php中创建维护视图

    更多信息:https://laravel.com/docs/5.5/configuration#maintenance-mode