【发布时间】:2019-06-15 15:16:03
【问题描述】:
我的 routes/web.php 中有以下路线。
Route::get('page/{slug}', 'PageController@index')->name('front.page.slug');
Route::get('inquiry/contact-us', 'ComplaintController@index')->name('front.complaint');
Route::get("product/{product}", 'ProductController@show')->name('front.get.product');
它的工作e.g.
- https://example.com/page/about-us
- https://example.com/page/terms-&-condition
- https://example.com/page/privacy-policy
- https://example.com/inquiry/contact-us
- https://example.com/product/product-slug-any
当我更改路线时,它向我显示产品未在页面模型中退出的错误。
Route::get('{slug}', 'PageController@index')->name('front.page.slug');
Route::get('contact-us', 'ComplaintController@index')->name('front.complaint');
Route::get("{product}", 'ProductController@show')->name('front.get.product');
我不知道如何使用没有资源名称的 slug 开始路由,以获取 SEO 友好的 URL E.g.
【问题讨论】:
-
由于 {slug} 和 {product} 是冲突的路线,即它们都捕获相同的 url,因此您试图实现的目标是不可能的
-
你是对的,还有其他方法可以实现吗?
-
你需要有一个
catchall路由。在另一个问题中查看我的answer。 -
@Mozammil 是正确的,或者例如,如果您的产品和 slug 可以通过正则表达式区分,您可以使用类似
{product:[0-9]+} -
@Mozammil 这很有意义。谢谢
标签: laravel