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]);
}
我有这样的路线:
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]);
}