呃,分享个网站开关的代码 - laravel 5.0以上版本

昨天没事写了个后台功能,正好写到网站开启和关闭,拿来给大伙分享下。
php artisan down 和 php artisan up
关闭维护模式 和 开启维护模式
虽然好用,但是在正式项目上线时你会发现,使用 php artisan down时laravel会把所有路由都指向503,这样会很尴尬的,因为你连后台都无法进入的。
最好的解决办法就是将不想关闭维护的路由隔离开即可,开始上代码了~

我们使用laravel强大 Artisan 控制台
Artisan::call('down');

先启动【关闭维护模式】

这个是【开启维护模式】
Artisan::call('up');

然后创建一个中间件
php artisan make:middleware CheckForMaintenanceMode

CheckForMaintenanceModel.php
<?php
namespace App\Http\Middleware;
/**
* 开启和关闭站点 - 中间件
* User: shineforce
* Date: 2015/8/25
* Time: 20:32
*/

use Closure;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Http\Request;
use Symfony\Component\HttpKernel\Exception\HttpException;

class CheckForMaintenanceMode
{
protected $request;
protected $app;

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

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request $request
 * @param  \Closure $next
 * @return mixed
 */
public function handle($request, Closure $next)
{

    //使用$request->is 隔离出不需要关闭的路由
    //使用isDownForMaintenance获取网站已经启用 【关闭维护模式】
    if (!$request->is('admin/*') && $this->app->isDownForMaintenance()) {
        throw new HttpException(503);
    }

    return $next($request);
}
}

然后到 app > Http > Kernel.php 的 protected $middleware中 添加
\App\Http\Middleware\CheckForMaintenanceMode::class,

并且将原始的
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,

删除掉即可。

0 个评论

要回复文章请先登录注册