php - 如何在 PHP 中接受“子目录”作为参数
问题描述
我目前正在重新制作一个不再维护的封闭源 API。我很幸运暂时仍然能够使用 API,但我不确定它还能使用多久。
本质上,API 以 JSON 格式返回有关游戏的信息,应用程序使用此数据。
下面是一个示例 API 调用:
/api/updates/game/version
据我所知,他们不只是每个版本都有一个文件,我相信它将所有“子目录”作为获取请求处理(我可能是错误的)
我的问题是如何将一个文件夹中的所有子目录转到 PHP 文件,并提供有关调用的信息。
最后也是最困难的事情是,我如何在没有重定向的情况下做到这一点。由于应用程序的制作方式,它不遵循重定向,并且会在 301 处出错(正如我在尝试对每个版本文件夹使用 index.php 时发现的那样)。
谢谢!
解决方案
.htaccess
您必须对您的.htaccess
. 你想要的是一个 PHP 文件,它接收对里面目录的所有请求。把它放进你的.htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /api/
RewriteRule ^api\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /api/api.php [L]
</IfModule>
这会将所有请求指向同一个文件:/api/api.php
例子:
/api/game/xy/ -> /api/api.php
/api/game/xy/version -> /api/api.php
/api/hello ->/api/api.php
/api/api.php
现在,在您的/api/api.php
. 中获取请求的路径 $_SERVER['REQUEST_URI']
。
在下面的示例中,我添加了str_replace
, 因为在 Windows 上路径包含\
而不是/
.
<?php
// /api/api.php
$requestURI = str_replace('\\', '/', $_SERVER['REQUEST_URI']);
推荐阅读
- python - 如何在任务栏中不显示程序的情况下运行 python 代码
- android - RecyclerView OnClick 侦听器返回错误
- python - 在单行中打印列表元素但不使用循环
- python - grep 父 pom 版本并替换为新值
- android - 仅安装了设备凭据的 Androidx.biometric 不会在具有 Android 9 及以下版本的设备上调用回调
- cognos - 如何使用 TM1py 在 Python 和 IBM TM1 OLAP 工具之间建立连接
- javascript - 修复函数中的 no-param-reassign Eslint 问题
- node.js - 机器学习过程的 Sagemaker 用户密钥和秘密
- python - 如何按 2 列分组并在熊猫中执行计数
- android - Android - 谷歌说我的代码有意图漏洞?