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

时间:2018-04-03 07:53:42

标签: php laravel laravel-5 routes

我有一条工作路线

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

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

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

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

查看Blade

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

php artisan route:list

|    | GET|HEAD | {slug}        | view   | App\Http\Controllers\Controller@view    | web   |
|    | GET|HEAD | {slug}/order  | order  | App\Http\Controllers\Controller@order   | web   |

每当我点击此链接时,Laravel都会返回未找到错误。什么问题?我重新启动了服务器&amp;检查Mod_rewrite。一切都很好。

2 个答案:

答案 0 :(得分:1)

我想你忘记了代码 更改您的代码

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

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

答案 1 :(得分:0)

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

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

示例:

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

使用此设置。 ALL 路由将转到您的Controller方法。由于您{{url}}抓住了所有内容

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

有关详细信息,请查看laravel docs