繁体   English   中英

Laravel-所有路由链接均以子域为前缀

[英]Laravel - All route links are prefixed with sub-domain

我在应用程序中使用子域作为用户帐户的仪表板。 在仪表板的视图中,我包括一个主模板,该模板包含导航中指向网站根目录的链接。 当我访问子域名时,我注意到导航中的所有链接都根据子域名进行了更改。

在我的主模板中,链接是使用辅助函数route()生成的 在我的子域中查看生成的链接时,该链接连同所有其他链接一起从domain.com/about更改为sub.domain.com/about

Route::group(['domain' => 'dashboard.project.app', 'before' => 'auth'], function() 
{
    Route::controller('/', 'DashboardController');
});

Route::get('/', ['as' => 'home', 'uses' => 'HomeController@index']);

Route::resource('products', 'ProductsController');

Route::resource('support', 'SupportController');

因此,访问dashboard.project.app将在DashboardController中触发getIndex() ,而访问project.app将在HomeController中触发index()

太好了,我们已经做到了。 现在,我有一个简单的视图用作模板,它将包含指向在子域外部定义的命名资源路由的URL。

同样,使用辅助函数route()创建 URL。 在由DashboardController中调用的视图扩展的模板中,导航中的链接如下:

<a href="{{ route('products.index') }}">Products</a>

会根据需要生成<a href="http://project.app/products">Products</a> ,但是更改为<a href="http://dashboard.project.app/products">Products</a>在子域下的视图中显示。

因此,我希望所需的输出始终是project.app/products,而不是dashboard.project.app/products,因为访问该链接将导致404,因为我的DashboardController中没有getProducts()方法。 这是错误的链接!

明白我的意思吗?

如果命名路由未定义为特定于某个域,则url生成器将使用您当前所在的任何域。 如果路由应特定于域,请指定它:

Route::group(['domain' => 'project.app'], function() {
    Route::resource('products', 'ProductsController');
    Route::resource('support', 'SupportController');
});

现在,即使从仪表板上, route('products.index')应该给您project.app/products

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM