URL rewriting in built-in web server of PHP

PHP comes with a handy for development built-in web server.  However, most web projects have friendly URLs these days which are either Apache (mod_rewrite) or Nginx specific configuration.  This almost renders built-in PHP web server useless.  Unless you provide a PHP-based routing, like so:

$request_uri = __DIR__ . $_SERVER["REQUEST_URI"];
if (file_exists($request_uri)) {
  return false;
} else {
  include __DIR__ . ‘/index.php';
}

Start the PHP web server with the following command then (routing.php being a file with the above content):

$ cd my-project && php -S localhost:8000 routing.php

Thanks to this blog post and comments.  Now you can completely skip having Apache and Nginx on developer machines and all that shenanigan with configuring virtual hosts, modules, and such.

5 thoughts on “URL rewriting in built-in web server of PHP”

Leave a Comment