Laravel $request->input() 正在获取 url 路径和查询参数名称

Laravel $request->input() is getting url path together with the query param name

我有一条路线可以从数据库中获取多条记录。可以将过滤器作为查询参数应用于它。例如西德。 在我的控制器中,我正在做一个 $chosen_category = $request->input('cid', 0); 并且在本地主机上工作时它恰到好处。 但是,在真实域上进行测试时,第一个请求参数被破坏了,因为它获取了整个路径和名称。所以我的变量总是等于默认值 (0)。

这是 print_r($request->all()) 的输出:

在本地主机上:

Array ( [cid] => 33 )

网站域名:

Array ( [//items/getAll?cid] => 33 )

我的路线定义为

Route::prefix('items')->group(function () { Route::get('/getAll', [App\Http\Controllers\ItemsController::class, 'getItems']); });

我正在从前端向 "items/getAll?cid=33" 发出请求。它在其他一切正确的情况下执行正确的功能,只是第一个参数的名称错误。如果重要,域的类型为 subdomain.domain.com。

为什么它的行为与本地主机不同?我该如何解决?

在阅读了有关查询参数的问题后,我检查了 $_SERVER["QUERY_STRING"] 变量的输出并发现它是相同的(//items/getAll?cid=33 而不仅仅是 cid=33)所以问题与网络服务器有关,与我的代码无关。

找到这个后,我搜索了问题并开始查看 Web 服务器(它是 Nginx)的配置文件。 原来在 nginx conf 中为此域更改一行解决了问题:

之前:try_files $uri $uri/ /index.php?/$request_uri;

之后:try_files $uri $uri/ /index.php$is_args$query_string;

(我不是设置服务器的人,所以我不知道它在做什么。)