WordPress路由之前的Laravel中间件

时间:2019-07-09 14:44:36

标签: php laravel middleware

我在Laravel项目中安装了WordPress。 它位于公用文件夹内的/ forum文件夹下,因此每次我转到:

  

http:// localhost:8000 / forum /

它将打开WordPress页面。

但是,在此路由之前我无法运行中间件实例。

我要:

Route::GET('/forum', function() { })->middleware('wp_login');

这是我的示例中间件:

<?php
namespace App\Http\Middleware;

use Closure;
use Log;

class WpForumLogin
{
    public function handle($request, Closure $next)
    {

        Log::debug("test forum lalalala");

        return $next($request);
    }
}

中间件在内核中的设置如下:

    ...
    protected $routeMiddleware = [

        ...

        'wp_login' => \App\Http\Middleware\WpForumLogin::class,

    ];

在运行WordPresse的/ forum路由之前如何运行此中间件?

谢谢。

2 个答案:

答案 0 :(得分:0)

您不能拥有与您的路线同名的公共目录。 Web服务器将始终始终首先查找实际的文件/文件夹。

答案 1 :(得分:0)

这是您可以做什么的想法:

  • 重命名“论坛”文件夹(例如“ wordpress”)
  • 现在,当您进入“ /论坛”路线时,laravel会做出响应,并且您可以执行中间件
  • 在中间件中,您进行控制后,可以将用户重定向到新文件夹(例如“ wordpress”)。

此解决方案的缺点:

  • 用户可以看到url的变化
  • 如果用户直接进入“ / wordpress” URL,他将绕过您的中间件。在这种情况下,您可以检查引荐来源网址,并根据需要进行操作。

这不是理想的解决方案,而是一种解决方法。