I'm creating an API via PHP. I need to let users see a particular user. For example if someone goes to mysite.com/users/2
, he must get the data about the user with id=2.
This is my .htaccess file:
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.css$
RewriteRule ^([-/_a-zA-Z0-9\s]*)$ index.php?url=$1 [QSA,L]
The variable $url in index.php
contains the whole url (for example users/2
)
I use something like if($url == "users"){ //code }
for routes, but what can I do with id
that can be various?
Since you have everything in $url
, you can just use explode()
Here's an example:
$url = "users/1234";
$url_array = explode("/", $url, 2);
echo $url_array[1];
This doesn't handle any errors, and as you stated in the comments, you'd need to implement those. So, unless this is a very small project it does seem safer, more maintanable, faster, etc. to use a framework like Laravel, or perhaps a micro-framework Lumen or Slim if you only need a few features.
You dont have to include the url in the RewriteRule:
# Redirect all requests to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Then in your index.php:
$urlparts = explode("/", substr(@$_SERVER['PATH_INFO'], 1));
if($urlparts[0] == 'users'){
//find user with id $urlparts[1]
}