首页  >  问答  >  正文

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

<p>将所有 Laravel 路由重定向到同一路由,但更改基本 URL。</p> <p>我想将 Laravel 项目从域转移到子域 将最后一个域上的所有请求重定向到同一个新子域的最佳方法是什么。</p> <p>例如,如果用户向此 URL 发送请求</p> <pre class="brush:php;toolbar:false;">mydomain.com/page/1</pre> <p>重定向到此网址</p> <pre class="brush:php;toolbar:false;">subdomain.mydomain.com/page/1</pre> <p>我更喜欢在 Laravel 项目内部处理。不是 NGINX 配置。</p>
P粉310931198P粉310931198437 天前492

全部回复(1)我来回复

  • P粉052686710

    P粉0526867102023-09-03 00:47:56

    要在 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

    回复
    0
  • 取消回复