我正在寻找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)
{
//
});
});
答案 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