为了账号安全,请及时绑定邮箱和手机立即绑定

PHP/HTACCESS 创建不带扩展名的链接

PHP/HTACCESS 创建不带扩展名的链接

PHP
慕妹3242003 2023-07-21 16:11:28
我想为我的服务制作用户友好的 API。我试图使它像 Discord API - https://example.com/api/accounts/<account ID>/<stuff>/,下面是一些预期的链接示例:https://example.com/api/accounts/1234567890/data/https://example.com/api/accounts/1234567890/inventory/https://example.com/api/accounts/1234567890/servers/我尝试使用一些 htaccess 技巧,但没有任何结果 - 网站已损坏(只是白页,没有任何内容)或帐户 ID 被视为文件夹(HTTP 404,因为我不希望这些 ID 作为文件夹)。预先感谢您的回复编辑1:文件结构可以是任何结构,我只是想让它工作。但我最期待的是api- accounts  - data  - inventory  - ...- server (example)- game (example)编辑2:我的 API 是 OOP - 所以我可以从任何地方调用它。我只需要获取数据并创建新对象并调用一些函数。在我看起来很糟糕的 API 中,链接就像:https://example.com/api/accounts/data.php?id=123456789在该脚本中我调用$stuff = new StuffObj($id, $other, $stuff, $from, $post);并运行类似$stuff->execute();. 但是使用新的 API,我可以像操作一样使用 GET var,并在 switch 中选择要使用的对象。
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

在我看起来很糟糕的 API 中,链接是这样的:https://example.com/api/accounts/data.php?id=123456789

在这种情况下,要实现表单的“漂亮”URL /api/accounts/<id>/data/,您可以在文件中使用 mod_rewrite 执行类似以下操作/api/.htaccess

Options -MultiViews

RewriteEngine On

RewriteRule ^accounts/(\d+)/data/$ accounts/data.php?id=$1 [L]

为了使这个更加“通用”,将表单的 URL 重写/api/accounts/<id>/<action>//api/accounts/<action>.php?id=<id>,假设<action>只包含小写字母,那么您可以将上面的RewriteRule内容更改为:

RewriteRule ^accounts/(\d+)/([a-z]+)/$ accounts/$2.php?id=$1 [L]

尽管在您的文件结构中,您似乎有目录的“子目录”(?)/accounts也与文件的基本名称匹配.php?如果是这样,这可能会出现问题,因此我在上面禁用了 MutliViews。

但是使用新的 API,我可以像操作一样进行 GET var

是的,你可以 - 也许更好 - 一切都由单个入口点管理(例如 -index.php但你可以将其称为你喜欢的任何名称) - 但是,在实现“漂亮的 URL”之前,您需要具体并决定这一点 - 这实际上只是装饰性的绒毛。事实上,如果这只是一个 API,您是否需要实现一个“漂亮的 URL”?


查看完整回答
反对 回复 2023-07-21
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信