Laravel - 路线不工作(未找到)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel - 路线不工作(未找到)相关的知识,希望对你有一定的参考价值。
我有一条工作路线
Route::get('/{url}', 'Controller@view)->name('view')->where('url', '[wd-]+(.*)');
我在这个页面上有一个链接来下订单,我想创建一个路由
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 Route [admin.delete-post] 未定义 - 我定义了这条路线
404 - 未找到存在 Laravel 8 的 Passport Api 路由