子域路由

时间:2014-01-28 01:09:24

标签: php laravel-4 subdomain routes

我正在寻找Dayle Rees site consern路由,我无法实现以下子域路由。

Route::group(array('domain' => 'another.url.dev'), function()
{
    return 'Hello';
});

我设置了一个名为url.dev虚拟主机,它指向\var\www\url.dev\public,效果很好。

下一步是什么?如何访问 another.url.dev ?我试图直接以http://another.url.dev的形式访问它,但无法找到它。

我错过了什么吗?我是否必须配置我的服务器,主机等?

附录

我的目标是实现类似的东西

Route::group(array('domain' => '{account}.myapp.com'), function()
{

    Route::get('user/{id}', function($account, $id)
    {
        //
    });

});

1 个答案:

答案 0 :(得分:3)

您需要在开发环境和生产环境中设置子域名的通配符重定向。

如果没有它们,对“http://somerandomsubdomain.example.com”的请求将永远不会被路由到您的应用程序。 Laravel甚至没有机会处理它。


编辑:抱歉,当我离开那个不完整的答案时,我正在离开工作。

完全与Laravel应用程序分开,您需要一种方法将子域映射到IP地址。您必须在开发机器和生产服务器上进行设置。

在制作中,它非常简单。您必须添加DNS条目才能创建CNAME记录。以便*.example.com只指向example.com。如果您无法控制或访问DNS服务器,则您的Web主机或DNS提供商可能必须为您执行此操作。

在您的开发机器上,它可能会有点困难。如果您使用的是本地DNS服务器,或安装了dnsmasq或可用(可能在您的路由器上),您将创建一个CNAME记录,就像在生产中一样。

但是,许多开发环境依赖于自定义的主机文件,并且您无法在那里进行通配符重定向。但是,如果您提前知道子域名是什么,则只需将以下内容添加到/etc/hosts(OSX或* nix like systems)或%SystemRoot%\system32\drivers\etc\hosts Windows中:

127.0.0.1 example.dev
127.0.0.1 sub1.example.dev
127.0.0.1 sub2.example.dev

如果您提供有关开发和生产环境的更多信息,我可以提供更多帮助。

与此同时,这个答案可能会有所帮助:https://stackoverflow.com/a/79811/388682