Laravel 5.8は、domain.com / apiの横にあるAPIエンドポイントとしてサブドメインを使用します
いくつかのAPIのエンドポイントを備えた本番サーバーがあります。すべてのAPI呼び出しを次のdomain.com/api/v1/xxxxxx
ようなサブドメインに移動するよりきれいなシステムを作りたいだけですapi.domain.com/v1/xxxxxx
今では、cPanelでサブドメインを作成します:api.domain.com次に、そのサブドメインをpublic_html
laravelのフォルダーにポイントします(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
しかし、それはあまりにも醜いので、2番目の/api/
urlパラメーターを削除する必要があります。
どうすればいいですか?
PS:サブドメインマッピングをpublic_html/api
に配置しますが、明らかにエラー500でクラッシュします。
私の心は、解決策は.htaccessファイルにあるかもしれないと私に言いますが、それについてはあまり知りません。
ありがとう
回答
以下のように、RouteServiceProviderのメソッドからapi
削除することで、デフォルトのプレフィックスを削除できます。prefix('api')
mapApiRoutes()
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サブドメインについては、メインドメインの上に配置するだけです。そうすれば、それがどのディレクトリを指しているのかを心配する必要はありません。