我有一个使用子域路由的 Laravel 5.2 项目,本地(homestead)和生产环境(在 AWS 上使用通配符子域路由配置的 forge)都可以运行。我的本地项目在 hosts 文件中有一个 admin.project.app 条目,并成功路由到 admin.project.app,而我的生产版本则路由到 admin.project.com。
我的本地 .env 文件变量为 APP_ENV=local,而我在 forge 上的 .env 变量为 APP_ENV=production。目前为止还好。
我的问题是,我希望 Laravel 根据我是在本地运行(扩展名为 .app)还是在生产环境运行(扩展名为 .com),来解析域名,使用这种通配符路由规则:
Route::group(['domain' => 'admin.project.*'], function()
{
Route::get('/', 'HomeController@index');
});
我遇到的问题是,Laravel、Nginx、AWS或Forge要求我明确地进行路由,这似乎完全是多余的:
if (App::environment('local')) {
Route::group(['domain' => 'admin.project.app'], function()
{
Route::get('/', 'HomeController@index');
});
}else{
Route::group(['domain' => 'admin.project.com'], function()
{
Route::get('/', 'HomeController@index');
});
}
也许我的期望值不正确 ;) 如果您能指出我可能做错的地方,我将不胜感激!
.
)比三元运算符?
和:
优先级高,所以在计算时它尝试将字符串与条件的结果(即true
或false
)连接起来,而不是表达式的结果(即com
或app
)。 - Bogdan