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

Laravel Routing Error 404 /{slug} and parameter {domain}

我有这样的路线:

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

这是我的blade文件中的路线

{{ route('domain.tunnels.show', ['slug' => $tunnel->slug])}}

它给我 url 这样的:http://maindomain.com/my-slug"

效果很好!

然后,我想使用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 看起来不错:http://customdomain.com/my-slug 但是当我尝试打开页面时出现 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'));
});

完整域名作为名为域的参数传递给路由处理程序

{{ route('domain.tunnels.show', ['domain' => $tunnel->domain,'slug' => $tunnel->slug]) }}    

在项目的 app/Providers/RouteServiceProvider.php 文件中,将 boot 方法更改为以下内容:

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]);
}