首页 > 解决方案 > Laravel $request->input() 正在获取 url 路径以及查询参数名称

问题描述

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

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

在本地主机上:

数组( [cid] => 33 )

现场域名:

数组( [//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。

为什么它的行为与 localhost 不同?我该如何解决?

标签: phplaravelparameterspathrequest

解决方案


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

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

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

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

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


推荐阅读