我如何接受 "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']);
我目前正在重新制作一个不再维护的封闭源 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']);