为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 6 搜索路由 404

Laravel 6 搜索路由 404

PHP
汪汪一只猫 2022-12-11 10:38:39
我已经尝试了一些东西,但出于某种原因,在我安装 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 个选择:

  1. 如果未使用此行,请将其删除(404 可能是从 ChannelController 中不存在的方法或未找到的“通道”调用的)。

  2. 如果使用这条路线 - 你输入它的方式是不好的做法(并且导致错误)。最好使用'channel/{channel}'。

  3. 如果您真的需要捕获在 URL 的 0 级上键入的每个文本,只需将此路由放在搜索路由之后,最后。


查看完整回答
反对 回复 2022-12-11
?
MM们

TA贡献1886条经验 获得超2个赞

更改这些行的顺序:

Route::get('/{channel}','ChannelController@index');
Route::get('/search','SearchController@index')->name('search');

您有一个采用变量(名为channel)的路由,当您调用该search路由时,它会将search字符串作为channel变量传递。


查看完整回答
反对 回复 2022-12-11
  • 2 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信