ApiRest Beautify url with rewrite paramaters

时间:2015-09-15 14:04:52

标签: php .htaccess api rest url

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

2 个答案:

答案 0 :(得分:4)

最好的方法是更改​​.htaccess文件,如下所示:

  

RewriteEngine On   RewriteRule ^ 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

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

  

RewriteRule ^ api /([^ /] )/([^ /] )/([^ /] )$ /api.php?request=$1 [L] <登记/>   RewriteRule ^ api /([^ /] )/([^ /] )/([^ /] )$ /api.php?request=$1&id=$2 [ L]
  RewriteRule ^ api /([^ /] )/([^ /] )/([^ /] *)$   /api.php?request=$1&id=$2&status=$3 [L]

问候。

答案 1 :(得分:1)

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

Options +FollowSymLinks

RewriteEngine on

RewriteRule ^(.*)/(.*)/?$ $1.php?request=$2
RewriteRule ^(.*)/(.*)/(.*)/?$ $1.php?request=$2&id=$3