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方法添加到了隧道模型中@看见