Laravel - 仅针对某些 url 的维护模式

gio*_*ima 5 php laravel laravel-5

我需要使用Maintenance mode使用 artisan 命令"down",但仅适用于某些网址...

就我而言,我希望所有以开头的 url"/admin/*"继续工作。

有解决办法吗?

Mar*_*rio 13

看看app/http/middleware/CheckForMaintenanceMode.php 有一个 URI 数组:

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;

class CheckForMaintenanceMode extends Middleware
{
    /**
     * The URIs that should be reachable while maintenance mode is enabled.
     *
     * @var array
     */
    protected $except = [
        //
    ];
}
Run Code Online (Sandbox Code Playgroud)

数组示例:

    protected $except = [
        'api/customers',
        'api/user'
    ];
Run Code Online (Sandbox Code Playgroud)

  • 不知道为什么这被否决,但这实际上是本机答案。如果您(如示例中所示)扩展原始中间件,然后覆盖“$ except”数组以添加执行“artisan down”后可访问的路由。 (2认同)
  • 如何使用参数?您是否尝试在 $ except 数组中使用通配符,例如“/ admin / *”?您能提供示例路线吗? (2认同)

gio*_*ima 1

建议@lukasgeiter我创建了一个测试我的网址的中间件...这是我的代码:

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\RedirectResponse;

class Maintanance {
    public function handle($request, Closure $next){
        if($request->is('admin*') || $request->is('maintanance')){
            return $next($request);
        }else{
            return new RedirectResponse(url('/maintanance'));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

之后我创建了一个route显示维护视图:

Route::get('maintanance', function(){
    return view('errors.503');
});
Run Code Online (Sandbox Code Playgroud)

现在我可以调用该命令"up",并且该应用程序仍在维护中,但是/admin网址...