Laravel 5.3,使用 api.example.com 到 example.com/api

Posted

技术标签:

【中文标题】Laravel 5.3,使用 api.example.com 到 example.com/api【英文标题】:Laravel 5.3, using api.example.com to example.com/api 【发布时间】:2017-01-19 12:05:48 【问题描述】:

如何将 api.example.com 路由到 example.com/api,这样我就可以了

api.example.com/v1/users 

比使用

example.com/api/v1/users.

我正在使用 nginx,谢谢。

【问题讨论】:

rewrite ^/api/(.*)$ http://api.example.com/$1 redirect; 放入 example.com 的服务器块中。 【参考方案1】:

确保这两个步骤到位。

检查您的 nginx 配置 /etc/nginx/conf.d/example.conf 并将域包含在 server_name 中,如下所示:

server_name example.com api.example.com;

检查您是否在routes/api.php 文件中设置了路由。使用子域组是可选的,但请确保您拥有正确的路由。

使用域组的示例:

Route::group(['domain' => 'api.example.com'], function () 
    Route::get('/v1/users', ['as' => 'api.users.index', 'uses' => 'UserController@index']);

不使用域组的示例并允许两个 URL 指向同一个控制器(请务必根据 'as' 定义自己的路由名称)。

Route::get('/v1/users', ['as' => 'api.users.index', 'uses' => 'UserController@index']);
Route::get('/api/v1/users', ['as' => 'users.index', 'uses' => 'UserController@index']);

更新

关于子域路由的使用参考 Laravel 5.3 官方文档https://laravel.com/docs/5.3/routing#route-group-sub-domain-routing

【讨论】:

感谢您的帮助,现在我的 nginx 已将示例和 api.example 指向 laravel 公用文件夹。对于路由,由于 5.3 已将路由放置在 routes/web.php 和 routes/api.php,我必须使用 web.php 才能使其正常工作。 啊..更新了我的答案。没有意识到路由文件结构的变化。 需要在您的解决方案中使用 web.php,因为 api.php 只能从 example.com/api 访问。你可以试试看。

以上是关于Laravel 5.3,使用 api.example.com 到 example.com/api的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3 Passport API 在 Postman 中使用个人访问令牌未经身份验证

LARAVEL 5.3,获取用户名和角色名(使用 Laravel 模型关系)

Laravel 5.2 或 5.3:如何正确实施检查会话是不是已登录

在 laravel 5.3 中使用带有访问器的强制转换

如何使用获取参数将 laravel (5.3) 路由重定向到其他路由

Laravel 5.3 使用 with() 方法预先加载关系