如何在PHP中处理动态路由?

时间:2019-01-23 15:21:17

标签: php algorithm api url

我正在通过PHP创建一个API。我需要让用户看到特定的用户。例如,如果有人去mysite.com/users/2,他必须获得ID = 2的有关用户的数据。

这是我的.htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_URI} !\.css$
RewriteRule ^([-/_a-zA-Z0-9\s]*)$  index.php?url=$1 [QSA,L]

index.php中的$ url变量包含整个URL(例如users/2

我使用if($url == "users"){ //code }之类的路线,但是如何使用id进行各种活动?

2 个答案:

答案 0 :(得分:1)

由于MSG_PEEK中包含了所有内容,因此您只需使用$url

这是一个例子:

explode()

这不会处理任何错误,正如您在注释中所述,您需要实现这些错误。因此,除非这是一个很小的项目,否则使用Laravel之类的框架似乎更安全,更可维护,更快,等等,或者使用微型框架LumenSlim您只需要几个功能。

答案 1 :(得分:0)

您不必在RewriteRule中包含网址:

# Redirect all requests to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

然后在您的index.php中:

$urlparts = explode("/", substr(@$_SERVER['PATH_INFO'], 1));
if($urlparts[0] == 'users'){
    //find user with id $urlparts[1]
}