我如何接受 "subdirectories" 作为 PHP 中的参数

How can I accept "subdirectories" as parameters in PHP

我目前正在重新制作一个不再维护的封闭源 API。我很幸运,暂时还能用API,但不知道还能用多久

本质上,API returns 游戏信息 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/版本 -> /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']);