Laravel - 路线不工作(未找到)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel - 路线不工作(未找到)相关的知识,希望对你有一定的参考价值。

我有一条工作路线

Route::get('/{url}', 'Controller@view)->name('view')->where('url', '[wd-]+(.*)');

这完美地工作,并显示如下页面(只是演示页面):Demo Landing Page

我在这个页面上有一个链接来下订单,我想创建一个路由

Route::get('/{url}/order', 'Controller@order)->name('order')->where('url', '[wd-]+(.*)');

查看刀片

<a href="{{ route('order', $product['url']) }}">Order Now</a>

php artisan route:list

|    | GET|HEAD | {slug}        | view   | AppHttpControllersController@view    | web   |
|    | GET|HEAD | {slug}/order  | order  | AppHttpControllersController@order   | web   |

每当我点击此链接时,Laravel都会返回Not Found Error。什么问题?我重新启动了服务器并检查了Mod_rewrite。一切都好。

答案

路线从上到下工作。 Laravel搜索适合给定URL的任何内容。

使用{{slugs}}或任何其他参数时,最重要的是将最宽范围的键放在路线的底部。

例:

Route::get('/{url}', 'Controller@index);
Route::get('/{url}/order', 'Controller@order);

有了这个设置。所有路线都将转到您的Controller方法。因为你的{{url}}抓住了一切

通过切换2,您的更严格的路线首先在网址之前得到满足,并且要求非常广泛。

有关更多信息,请查看laravel docs

另一答案

我想你忘了你的代码改变你的代码

Route::get('/{url}/order', 'Controller@order)->name('order')->where('url', '[wd-]+(.*)');

Route::get('/{url}/order', 'Controller@order')->name('order')->where('url', '[wd-]+(.*)');

以上是关于Laravel - 路线不工作(未找到)的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 6路线未定义

Laravel Route [admin.delete-post] 未定义 - 我定义了这条路线

LARAVEL 路线不接受

404 - 未找到存在 Laravel 8 的 Passport Api 路由

加载资源失败:服务器使用 laravel 8 / ajax 响应状态为 404(未找到)

Laravel路线,其中where子句不按预期工作