首頁  >  問答  >  主體

如何使用 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粉310931198434 天前485

全部回覆(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
  • 取消回覆