呃,分享个网站开关的代码 - laravel 5.0以上版本
昨天没事写了个后台功能,正好写到网站开启和关闭,拿来给大伙分享下。
php artisan down 和 php artisan up
关闭维护模式 和 开启维护模式
虽然好用,但是在正式项目上线时你会发现,使用 php artisan down时laravel会把所有路由都指向503,这样会很尴尬的,因为你连后台都无法进入的。
最好的解决办法就是将不想关闭维护的路由隔离开即可,开始上代码了~
我们使用laravel强大 Artisan 控制台
先启动【关闭维护模式】
这个是【开启维护模式】
然后创建一个中间件
CheckForMaintenanceModel.php
然后到 app > Http > Kernel.php 的 protected $middleware中 添加
并且将原始的
删除掉即可。
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,
删除掉即可。