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

我想为我的服务制作用户友好的 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 中选择要使用的对象。


慕妹3242003
浏览 90回答 1
1回答

PIPIONE

在我看起来很糟糕的 API 中,链接是这样的:https://example.com/api/accounts/data.php?id=123456789在这种情况下,要实现表单的“漂亮”URL&nbsp;/api/accounts/<id>/data/,您可以在文件中使用 mod_rewrite 执行类似以下操作/api/.htaccess:Options&nbsp;-MultiViews RewriteEngine&nbsp;On RewriteRule&nbsp;^accounts/(\d+)/data/$&nbsp;accounts/data.php?id=$1&nbsp;[L]为了使这个更加“通用”,将表单的 URL 重写/api/accounts/<id>/<action>/为/api/accounts/<action>.php?id=<id>,假设<action>只包含小写字母,那么您可以将上面的RewriteRule内容更改为:RewriteRule&nbsp;^accounts/(\d+)/([a-z]+)/$&nbsp;accounts/$2.php?id=$1&nbsp;[L]尽管在您的文件结构中,您似乎有目录的“子目录”(?)/accounts也与文件的基本名称匹配.php?如果是这样,这可能会出现问题,因此我在上面禁用了 MutliViews。但是使用新的 API,我可以像操作一样进行 GET var是的,你可以 - 也许更好 - 一切都由单个入口点管理(例如 -index.php但你可以将其称为你喜欢的任何名称) - 但是,在实现“漂亮的 URL”之前,您需要具体并决定这一点 - 这实际上只是装饰性的绒毛。事实上,如果这只是一个 API,您是否需要实现一个“漂亮的 URL”?
打开App,查看更多内容
随时随地看视频慕课网APP