Laravel 6 搜索路由 404

我已经尝试了一些东西,但出于某种原因,在我安装 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   |

汪汪一只猫
浏览 74回答 2
2回答

qq_遁去的一_1

在“搜索”路由之前,您还有另一个带有“/{channel}”的路由,它将匹配您键入的所有内容,也包括“搜索”,因此永远不会调用 SearchController:Route::get('/{channel}','ChannelController@index');Route::get('/search','SearchController@index')->name('search');您有 3 个选择:如果未使用此行,请将其删除(404 可能是从 ChannelController 中不存在的方法或未找到的“通道”调用的)。如果使用这条路线 - 你输入它的方式是不好的做法(并且导致错误)。最好使用'channel/{channel}'。如果您真的需要捕获在 URL 的 0 级上键入的每个文本,只需将此路由放在搜索路由之后,最后。

MM们

更改这些行的顺序:Route::get('/{channel}','ChannelController@index'); Route::get('/search','SearchController@index')->name('search');您有一个采用变量(名为channel)的路由,当您调用该search路由时,它会将search字符串作为channel变量传递。
打开App,查看更多内容
随时随地看视频慕课网APP