我将路线定义如下。
Route::get('busses-from-{from}-to-other-city', 'Controller@method_a')->name('route_name_one');
Route::get('busses-from-{from}-to-other-road', 'Controller@method')->name('route_name');
一切正常,但是当我用破折号传递 {from} 值时,会引起问题。 (找不到404)。
作为示例,链接/ URL abc.com/busses-from-SouthAfrica-to-other-city
可以正常工作,但是当我在-
中添加SouthAfrica
时,会引起问题。所以abc.com/busses-from-South-Africa-to-other-city
根本没有用。
{from} 值可以包含一个或多个单词,这就是为什么我在这里询问解决方案的原因。
我知道可以在网址中添加+
或_
,但这对SEO不利,而SEO是该项目中最重要的部分。
答案 0 :(得分:3)
您应使用->where()
为此参数设置the constraint,以包括破折号。这样Laravel知道此参数的外观。
Route::get('busses-from-{from}-to-other-city', 'Controller@method_a')
->name('route_name_one')
->where('from', '[A-Za-z0-9-]+');