How to map URLs with PHP and lighttpd

On a number of occasions I’ve wanted to map a section of a site hosted with lighttpd onto a single PHP file that could then be used as a controller. Here is how I go about doing it.

The first part is to re-write the given part of the site to the PHP file you want to be the controller. Add the following to your configuration file:

  url.rewrite = (
        "^/(.*)" => "/controller.php"
  )

You can then start with a simple example to see where you will get your URL information from:

<?php
echo $_SERVER["REQUEST_URI"];
?>

The $_SERVER[“REQUEST_URI”] value will be the requested URI. You can now break it up into multiple parts with explode:

<?php
$urlParts = explode("/", $_SERVER['REQUEST_URI']);
echo $urlParts[1];
?>

At this point you have an array of the URI parts and can map those however you want using PHP.