[英].htaccess help for URL rewriting for a RESTful API System
我正在重新编写一个为MyBB开发的RESTful API系统,并且我已经完成了它,我所知道的大多数API都用于更新以制作更好的API版本,例如:
- https://api.example.com/v1
- https://api.example.com/v2
因此,我计划在同一域下为每个版本的API使用一个PHP文件,例如:
- api.example.com = [webroot]
- API v1:
- [webroot]/v1.php
- [webroot]/apifiles/v1 (files required for the API to work)
- API v2:
- [webroot]/v2.php
- [webroot]/apifiles/v2 (files required for the API to work)
所有[apifiles]均通过与该版本相对应的PHP文件进行访问。
事实是,当我尝试编写.htaccess文件以使用户在编写如下URL时直接访问v [#]。php文件时:
https://api.example.com/v1/authenticate?output=[output]&apikey=[apikey]&username=[username]&password=[password]
如果未正确接收参数,则会引发API通常会显示的错误:
网址正确书写:
https://api.example.com/v1.php/authenticate/?apikey=[apikey]&output=[output]&username=[username]&password=[password] Answer: {"uid":"[uid]","username":"[username]",...}
网址缺少参数:
https://api.example.com/v1.php?apikey=[apikey]&output=[output]&username=[username]&password=[password] Answer: {"error":"You don't have permission to access this page."}
唯一的区别是v1.php
文件和?
之间的/authenticate/
字符串?
。 该字符串可以更改,具体取决于用户希望对API进行什么操作(身份验证,在线,权限等),取决于此字符串将取决于传递的参数数。
我尝试了几种方法,甚至在整个Internet上搜索了答案,但是找不到真正对我有帮助的答案。 他们帮助我了解了.htaccess文件的工作方式。 主要帮助我的一个是: https : //code.tutsplus.com/tutorials/using-htaccess-files-for-pretty-urls--net-6049
并且作者推荐此工具: https : //regexr.com/
我当前的.htaccess文件包含以下内容:
Options +FollowSymLinks
<IfModule mod_rewrite.c>
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^v(\d+)\/([a-z]+)?(.*)$ ./v$1.php/$2/?$3 [L,QSA,NC]
</IfModule>
但是它不起作用,即使经过研究,我也想不出如何使它起作用。 提前致谢。
经过大量研究,尝试和时间,我得出的结论是不可能像@CBroe所建议的那样将$_SERVER['PATH_INFO']
与URL Rewriting
混合使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.