【问题标题】:Laravel Routing Error 404 /{slug} and parameter {domain}Laravel 路由错误 404 /{slug} 和参数 {domain}
【发布时间】:2019-11-06 12:35:12
【问题描述】:

我有这样的路线:

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

这是我的刀片文件中的路由

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

它给了我这样的网址: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 错误。

我试图弄清楚为什么从 2 天开始,但我无法理解:(

有什么我忘记了吗?

谢谢

编辑:

隧道控制器.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]);
}

【问题讨论】:

  • 你能在你的 TunnelController 中显示代码吗?
  • @djoo 你需要 laravel Dynamic custom domain routing?如果是,那么我会发布答案。
  • @AmitSenjaliya 首先,我想用我的蛞蝓获取隧道对象时遇到问题。然后,是的,我需要动态自定义域路由(它已经可以创建 URL,但我得到了 404)
  • @BartvanVenrooij 我编辑帖子并将隧道控制器的内容放在底部:)
  • 您是否将 getRouteKeyName 方法添加到您的隧道模型中? @见laravel.com/docs/5.8/routing#implicit-binding

标签: laravel routing


【解决方案1】:

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 文件中,将 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]);
}

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 2018-01-15
    • 2014-12-21
    • 2017-10-20
    • 2022-01-08
    • 2020-11-15
    • 2018-01-18
    • 2016-01-12
    • 2018-09-26
    相关资源
    最近更新 更多