【问题标题】:ApiRest Beautify url with rewrite paramaters带有重写参数的 Api Rest Beautify url
【发布时间】:2015-09-15 14:04:51
【问题描述】:

我正在构建一个 RestApi,但我的网址有问题。我想将“api.php?request=users”转换为“api/users”。但我也希望它是动态的。例如:如果用户键入“api/users/13”,我希望它与“api.php?request=users&id=13”相同。有没有办法让它变得动态?我必须单独创建每个案例吗?在这两种情况下如何做到这一点?非常感谢您的帮助!!

【问题讨论】:

    标签: php .htaccess api rest url


    【解决方案1】:

    最好的方法是像这样更改 .htaccess 文件:

    重写引擎开启
    重写规则 ^api/([^/])/([^/])/([^/]*)$ /api.php?request=$1&id=$2&state=$3 [L]

    原网址:

    http://www.domain.com/api.php?request=mike&id=3&state=active

    改写后的网址:

    http://www.domain.com/api/mike/3/active

    更新:如果您不知道参数的数量,请为每个“级别”添加一个重写:

    重写规则 ^api/([^/])/([^/])/([^/])$ /api.php?request=$1 [L] 重写规则 ^api/([^/])/([^/])/([^/])$ /api.php?request=$1&id=$2 [L]
    重写规则 ^api/([^/])/([^/])/([^/]*)$ /api.php?request=$1&id=$2&status=$3 [L]

    问候。

    【讨论】:

    • 谢谢,但参数的数量不是静态的,有时是 2 或 3 或 4 此示例仅适用于 3 ( request,id,state) 。没有?
    【解决方案2】:

    我认为你必须添加一个新的 RewriteRule,因为你需要不同的变量。

    Options +FollowSymLinks
    
    RewriteEngine on
    
    RewriteRule ^(.*)/(.*)/?$ $1.php?request=$2
    RewriteRule ^(.*)/(.*)/(.*)/?$ $1.php?request=$2&id=$3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      • 2013-11-10
      • 1970-01-01
      • 2019-04-07
      • 2020-03-29
      相关资源
      最近更新 更多