我正在创建一个应用程序,其中一些路由应该像从子域路由一样。
注意:我不想创建子域名。一切都将从控制器和路线开始。
这是网址
http://myapp.com/site/Home
这是路线
Route::group(['domain' => '{site}.myapp.com'], function () {
Route::get('/{site}/{page}', 'page@site');
});
我想让网址看起来像
http://site.myapp.com/Home
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
你只有一次机会以优雅的方式做你想做的事。您需要一个所谓的子域通配符。这意味着您的托管服务商可以选择将* .mydomain.tdl定义为子域。
此子域需要指向与mydomain.tdl完全相同的文件夹 - 因此应用的公用文件夹。不要改变其他任何东西。
最后定义一个组以获取所有子域作为参数
Route::group(['domain' => '{user}.mydomain.tdl'], function()
{
Route::get('{site}', 'MyController@DoStuff');
}
对于测试目的,您还可以简单地在组外定义第二个通用路线
Route::get('{user}/{site}', 'MyController@DoStuff');
现在您必须选择访问该页面
请注意以下事项:如果您定义通配符,www也是子域名。因此,www将开始匹配您的defiend子域。
另一个重要的细节是你很难在localhost上运行它。如果您不确定通配符,只需定义一个与该组
匹配的特定新子域example.myDomain.tdl可以指向laravel-app公共文件夹(就像myDomain.tdl一样),而不应该将示例作为已定义路由的参数传递