Laravel路由错误404/{slug}和参数{domain}

Laravel路由错误404/{slug}和参数{domain},laravel,routing,Laravel,Routing,我有这样的路线: Route::resource('tunnels', 'TunnelController'); Route::get('/{slug}', array('uses' => 'TunnelController@show','as' => 'domain.tunnels.show')); 这是我刀片文件中的路径 {{ route('domain.tunnels.show', ['slug' => $tunnel->slug])}} 它给我的url如下:

我有这样的路线:

Route::resource('tunnels', 'TunnelController');
Route::get('/{slug}', array('uses' => 'TunnelController@show','as' => 'domain.tunnels.show'));
这是我刀片文件中的路径

{{ route('domain.tunnels.show', ['slug' => $tunnel->slug])}}
它给我的url如下:

它工作得很好

然后,我想使用customdomain.com,所以我像这样配置我的路由

Route::resource('tunnels', 'TunnelController');
Route::get('/{slug}', array('domain' => '{domain}', 'uses' => 'TunnelController@show','as' => 'domain.tunnels.show'));
路线呢

{{ route('domain.tunnels.show', ['domain' => $tunnel->domain, 'slug' => $tunnel->slug])}}
url的呈现效果良好: 但是当我试图打开页面时,我得到一个404错误

我试着从两天开始找出原因,但我不明白:

有什么我忘了的吗

谢谢

编辑:

TunnelController.php

public function __construct()
{
    $this->middleware('auth', ['except' => 'show']);

}
public function show($slug)
{
$tunnel = Tunnel::where('slug', $slug)->first();
 return view('tunnels.show', ['tunnel' => $tunnel]);
}
Laravel中的动态自定义域路由:

您需要遵循以下代码:

Route::group(['domain' => '{domain}'], function() {
    Route::get('/{slug}', array('uses' => 'TunnelController@show','as' => 'domain.tunnels.show'));
});
完整域名作为名为domain的参数传递给路由处理程序

{{ route('domain.tunnels.show', ['domain' => $tunnel->domain,'slug' => $tunnel->slug]) }}    
在项目的app/Providers/RouteServiceProvider.php文件中,将引导方法更改为:

public function boot()
{
     \Route::pattern('domain', '[a-z0-9.\-]+'); 
     parent::boot();
}
在控制器TunnelController.php中

public function show(string $domain, string $slug)
{
    $tunnel = Tunnel::where('slug', $slug)->first();
    return view('tunnels.show', ['tunnel' => $tunnel]);
}
Laravel中的动态自定义域路由:

您需要遵循以下代码:

Route::group(['domain' => '{domain}'], function() {
    Route::get('/{slug}', array('uses' => 'TunnelController@show','as' => 'domain.tunnels.show'));
});
完整域名作为名为domain的参数传递给路由处理程序

{{ route('domain.tunnels.show', ['domain' => $tunnel->domain,'slug' => $tunnel->slug]) }}    
在项目的app/Providers/RouteServiceProvider.php文件中,将引导方法更改为:

public function boot()
{
     \Route::pattern('domain', '[a-z0-9.\-]+'); 
     parent::boot();
}
在控制器TunnelController.php中

public function show(string $domain, string $slug)
{
    $tunnel = Tunnel::where('slug', $slug)->first();
    return view('tunnels.show', ['tunnel' => $tunnel]);
}

您能在TunnelController中显示代码吗?@djoo您需要laravel动态自定义域路由吗?如果是的话,我会发布答案。@AmitSenjaliya首先我有一个问题,我想用我的弹头来获取隧道对象。然后,是的,我需要动态自定义域路由它已经可以创建URL了,但是我得到了404@BartvanVenrooij我编辑了这篇文章,并将tunnelController的内容放在底部:您是否将getRouteKeyName方法添加到了隧道模型中@你能在TunnelController中显示代码吗?@djoo你需要laravel动态自定义域路由吗?如果是的话,我会发布答案。@AmitSenjaliya首先我有一个问题,我想用我的弹头来获取隧道对象。然后,是的,我需要动态自定义域路由它已经可以创建URL了,但是我得到了404@BartvanVenrooij我编辑了这篇文章,并将tunnelController的内容放在底部:您是否将getRouteKeyName方法添加到了隧道模型中@看见