我正在使用Laravel项目中的API,并且在设置子域(Ubuntu)时遇到问题。
我设置了Virtualhost
,Routing
,启用了vhost_alias
虚拟主机:
<VirtualHost *:80>
ServerName domain.io
ServerAlias domain.io
DocumentRoot mypath
<Directory mypath>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName api.domain.io
ServerAlias api.domain.io
DocumentRoot mypath
<Directory mypath>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
我的路线:
Route::group(['domain' => 'api'.env('APP_HOST')], function() {
Route::get('test', function() {
return 'test';
});
});
网址http://api.domain.io/
重定向到主域domain.io
。当我访问我的路线http://api.happs.io/test
时,我收到错误(就像没有那条路线一样):
RouteCollection.php第161行中的NotFoundHttpException:
答案 0 :(得分:0)
在*.
上的域名前添加ServerAlias
,并确保您拥有通配符CNAME。
<VirtualHost *:80>
ServerName domain.io
ServerAlias *.domain.io
DocumentRoot mypath
<Directory mypath>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
答案 1 :(得分:0)
试试这个,将域和子域放在NameServer中:
<VirtualHost *:80>
ServerName domain.io api.domain.io
DocumentRoot mypath
<Directory mypath>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
答案 2 :(得分:0)
您的hosts
文件正确无误。问题是您的env('APP_HOST')
是一个静态值,但您的设置需要保持动态。
一个选项,也可能是最简单的方法(它也是我使用的方法),就是手动为子域创建路由。
Route::group(['domain' => 'api.happs'], function() {
// Do something
});