如何使用laravel路由系统将所有的laravel路由重定向到一个新的子域?

jdzmm42g  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(223)

将所有Laravel路由重定向到相同的路由,但更改基本URL。
我想将Laravel项目从域转移到子域什么是最好的方式来重定向上一个域的所有请求到相同的新子域。
例如,如果用户向该URL发送请求

mydomain.com/page/1

重定向到此URL

subdomain.mydomain.com/page/1

我更喜欢在laravel项目内部处理。不是NGINX配置。

6gpjuf90

6gpjuf901#

要在Laravel级别处理这个问题,您可以使用中间件。中间件提供了一种方便的机制来检查和过滤进入应用程序的HTTP请求。
这里有一个例子,你可以如何做到这一点。
首先,通过运行以下命令创建一个新的中间件:

php artisan make:middleware SubdomainRedirectMiddleware

接下来,打开新创建的文件app/Http/Middleware/SubdomainRedirectMiddleware.php,并将重定向逻辑添加到handle方法中:

public function handle(Request $request, Closure $next)
{
    // Replace 'mydomain' with your actual domain
    if ($request->getHost() === 'mydomain.com') {

        // Replace 'subdomain' with your actual subdomain
        return redirect()->to(str_replace('mydomain.com', 'subdomain.mydomain.com', $request->fullUrl()));
    }

    return $next($request);
}

然后,您需要注册此中间件。打开app/Http/Kernel.php,在routeMiddleware数组中添加以下行:

protected $routeMiddleware = [
    'subdomain.redirect' => \App\Http\Middleware\SubdomainRedirectMiddleware::class,
];

Route::group(['middleware' => 'subdomain.redirect'], function () {
    // All your routes go here
});

Please replace 'mydomain' and 'subdomain' with your actual domain and subdomain in SubdomainRedirectMiddleware.php.

▽这里有一个参考https://www.w3schools.in/laravel/middleware

相关问题