Laravel 5.8 使用子域作为 domain.com/api 旁边的 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 文件中,但 In 不太了解它。


慕姐4208626
浏览 137回答 2
2回答

眼眸繁星

您可以api通过prefix('api')从mapApiRoutes()RouteServiceProvider 中的方法中删除来删除默认前缀,如下所示:App\Providers\RouteServiceProvider.phpprotected 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。
打开App,查看更多内容
随时随地看视频慕课网APP