如何在 Laravel 中正确解析 url?

How to resolve urls correctly in Laravel?

我有 url 的产品详细信息(域。com/productdetail/1/name-of-product),当我单击 "about us" 页面时仍然在此 url,我收到错误消息 "this url doesnt exist"(域。com/productdetail/1/about-us)。我怎样才能让 url 正确解析到域。com/about-us

这是我的产品详情路线

Route::get('/productDetail/{id}/{pro_name}', 
'HomeController@detailPro');

这是关于我们的路线

Route::get('about-us', function(){
return View('about');
});

我想获得准确的路线 (domain.com/about-us) 而不是在当前 url (domain.com/productdetail/1/about-us).

的末尾链接

最好将路由作为命名路由。

Route::get('/productDetail/{id}/{pro_name}','HomeController@detailPro')->name('product.view');

Route::get('about-us', function(){
  return View('about');
})->name('about-us');

调用特定路由为

 <a href="{{route('about-us')}}">about us</a>
 <a href="{{route('product.view',['id' => $id, 'pro_name' => 'name_of_product'])}}">View Product</a>

按照@jitheshJose 的回答使用别名可以解决您的问题,但我认为您的问题就这么简单:

您在页面 "domain.com/productdetail/1/name-of-product" 上并且有一个 link 和 href="about-us"

单击此 link 时,将导致 "domain.com/productdetail/1/about-us"。

要解决此问题,请将 href 中的 link 更改为 href="/about-us"

为了更好地理解这里发生的事情,请查看相对 link 和绝对 link 之间的区别。

这是您可以使用的选项。

    Route::get('product-detail/{id}/{pro_name}', [
        'as' => 'product.view',
        'uses' => 'HomeController@detailPro',
    ]);

    Route::get('about-us', [
        'as' => 'about'
    ], function(){
          return View('about');
    });

Link:

 <a href="{{route('about')}}">About</a>
 <a href="{{route('product.view',['id' => $id, 'pro_name' => 'name_of_product'])}}">My Product</a>