Laravel子域路由 - NotFoundHttpException

时间:2016-05-27 14:44:33

标签: php laravel laravel-5 routing virtualhost

我正在使用Laravel项目中的API,并且在设置子域(Ubuntu)时遇到问题。

我设置了VirtualhostRouting,启用了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:

3 个答案:

答案 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
});