php - 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 不同?我该如何解决?
解决方案
在阅读了有关查询参数的问题后,我检查了$_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;
(我不是设置服务器的人,所以我不知道这是在做什么。)
推荐阅读
- reactjs - 将域添加到我的网站后未设置 HttpOnlyCookie
- python - 如何在一行中为 discord.py 发送多个反应
- sql - SpringJPA - 不一致的数据类型:预期 NUMBER 得到 BINARY
- python - 相对于绘图坐标设置 xticks
- python - 提供的关键元素与模式 update_item dynamodb 不匹配
- google-cloud-platform - 来自云工作流的云函数触发器返回 http 500
- c - 为什么 while 循环后的 printf() 不起作用?
- salt-stack - 访问列出的谷物值
- google-sheets-api - 错误 400:从 Google 站点中的嵌入代码对象到 Google Sheets API 的 Redirect_URI_Mismatch
- java - 如何忽略 JSONarray 中的值,仅将键与预期的 JSON (Java) 进行比较