AltoRouter

|

AltoRouter ist eine kleine, aber mächtige PHP-Klasse, mit der man auch große Projekte umsetzen kann.

Um AltoRouter nutzen zu können, muss im Webserver das URL-Rewriting aktiviert sein. Zusätzlich dazu, ist eine .htaccess-Datei notwendig, die die Anfragen an die index.php weiterleitet:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule . index.php [L]
</IfModule>

Die index.php-Datei nimmt die Anfragen entgegen und man kann eigene Routen erstellen, über die die Anfragen abgearbeitet werden:

<?php
header("Content-Type: text/html");
include dirname(__FILE__) . '/AltoRouter.php';

$router = new AltoRouter();
// $router->setBasePath('/');

/* Setup the URL routing. This is production ready. */

$router->map('GET', '/', 'home.php', 'home');
$router->map('GET', '/guest/', 'guest.php', 'guest');
$router->map('GET', '/user/[*:id]/', 'user/id.php', 'user-id');

// // API Routes
// $router->map('GET','/api/[*:key]/[*:name]/', 'json.php', 'api');

/* Match the current request */
$match = $router->match();
if($match) {
  require $match['target'];
} else {
  header("HTTP/1.0 404 Not Found");
  require '404.html';
}
?>

Wenn keine passende Route gefunden wird, wird HTTP Error 404 zurückgegeben und die 404.html-Datei angezeigt.

Eine (ungetestete) vHost-Konfiguration, bei der keine .htaccess notwendig ist:

<VirtualHost *:80>
  ServerName altorouter.local
  DocumentRoot "/var/www/html/altorouter/"
  ServerAdmin apache@altorouter.local
  ErrorLog ${APACHE_LOG_DIR}/altorouter-error.log
  CustomLog ${APACHE_LOG_DIR}/altorouter-access.log combined
  LimitRequestFieldSize 32768
  <Directory /var/www/html/altorouter>
    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule . index.php [L]
    </IfModule>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>