我已经尝试了一些东西,但出于某种原因,在我安装 Laravel 6.17 的 Homestead 时,我有一条 /search 路由给出了 404。如果用户没有在搜索字段中输入任何内容,我希望它能够重定向。我确实运行了 route:list 命令并得到了这个vagrant@homestead:~/www/nettubenew$ php artisan route:list+--------+----------+------------------------+------------------+------------------------------------------------------------------------+------------+| Domain | Method | URI | Name | Action | Middleware |+--------+----------+------------------------+------------------+------------------------------------------------------------------------+------------+| | GET|HEAD | / | home | App\Http\Controllers\GuestController@index | web || | GET|HEAD | channel/{channel} | | App\Http\Controllers\ChannelController@index | web || | PUT | channel/{channel}/edit | | App\Http\Controllers\ChannelSettingsController@update | web,auth || | GET|HEAD | channel/{channel}/edit | | App\Http\Controllers\ChannelSettingsController@edit | web,auth || | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest || | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest || | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web || | GET|HEAD | password/confirm | password.confirm | App\Http\Controllers\Auth\ConfirmPasswordController@showConfirmForm | web,auth |
2 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
在“搜索”路由之前,您还有另一个带有“/{channel}”的路由,它将匹配您键入的所有内容,也包括“搜索”,因此永远不会调用 SearchController:
Route::get('/{channel}','ChannelController@index');
Route::get('/search','SearchController@index')->name('search');
您有 3 个选择:
如果未使用此行,请将其删除(404 可能是从 ChannelController 中不存在的方法或未找到的“通道”调用的)。
如果使用这条路线 - 你输入它的方式是不好的做法(并且导致错误)。最好使用'channel/{channel}'。
如果您真的需要捕获在 URL 的 0 级上键入的每个文本,只需将此路由放在搜索路由之后,最后。
MM们
TA贡献1886条经验 获得超2个赞
更改这些行的顺序:
Route::get('/{channel}','ChannelController@index'); Route::get('/search','SearchController@index')->name('search');
您有一个采用变量(名为channel
)的路由,当您调用该search
路由时,它会将search
字符串作为channel
变量传递。
- 2 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消