繁体   English   中英

.htaccess帮助,用于RESTful API系统的URL重写

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM