簡體   English   中英

Laravel 5.8 使用子域作為 domain.com/api 旁邊的 API 端點

[英]Laravel 5.8 use subdomain as API endpoint beside domain.com/api

我有一個帶有一些 API 端點的生產服務器。 我只想制作一個更漂亮的系統,將所有 API 調用從domain.com/api/v1/xxxxxx移動到像api.domain.com/v1/xxxxxx這樣的子域

到現在為止,我只是在 cPanel 創建子域:api.domain.com 然后將該子域指向 laravel 的public_html文件夾(我做了public -> public_html重命名的技巧😁)

然后在api.php中添加路由映射域:

//SubDomain Mapping
Route::group(['domain' => 'api.bachecubano.com'], function () {
    Route::group(['prefix' => 'v1'], function () {
        Route::get('categories', 'Api\AdController@get_categories')->name('api_get_categories');
    });
});

並在api.domain.com/v1/xxx嘗試,但給我錯誤。 所以工作解決方案是api.domain.com/api/v1/xxx

但它太丑了,我需要刪除第二個/api/ url 參數。

我該怎么辦?

PS:將子域映射到public_html/api ,但這顯然會因錯誤 500 而崩潰。

我的想法告訴我,解決方案可能在 .htaccess 文件中,但對它了解不多。

謝謝

您可以通過從mapApiRoutes()方法中刪除prefix('api')來刪除默認的api前綴,如下所示:

App\\Providers\\RouteServiceProvider.php

protected function mapApiRoutes()
{
    // prefix('api) has been deleted

    Route::middleware('api')
         ->namespace($this->namespace)
         ->group(base_path('routes/api.php'));
}

至於 api 子域,我會把它放在主域之上。 然后你不必擔心它指向的目錄。

在 apache 中使用 .htaccess,你可以添加這個。

    RewriteCond %{HTTP_HOST} ^api.(bachecubano.com)$
    RewriteRule ^/?(.*)$ https://%1/api/$1 [L,R]

它在內部將 api 子域上的任何調用重定向到域/api。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM