diff --git a/public_html/rewrite.php b/public_html/rewrite.php
index 8cabec6..cc8c589 100644
--- a/public_html/rewrite.php
+++ b/public_html/rewrite.php
@@ -16,31 +16,55 @@ require("include/base.php");
$sPageTitle = "";
$sPageContents = "";
+/* Define the different routes for the application */
+
+$routes = array(
+ "home" => array(
+ "^/$" => "modules/home/index.php"
+ ),
+ "project" => array(
+ "^/project/([a-zA-Z0-9_-]+)$" => "modules/project/index.php",
+ "^/project/([a-zA-Z0-9_-]+)/tickets$" => "modules/project/tickets/index.php",
+ "^/project/([a-zA-Z0-9_-]+)/ticket/([0-9]+)$" => "modules/project/tickets/view.php"
+ )
+);
+
+/* Define the preset values for the route "categories" */
+
+$presets = array(
+ "home" => array(
+ "_page_type" => "home"
+ ),
+ "project" => array(
+ "_page_type" => "project",
+ "authenticator" => "authenticators/project.php",
+ "auth_error" => "modules/error/project.php"
+ )
+);
+
+/* Generate a routing table */
+
$router = new CPHPRouter();
$router->allow_slash = true;
$router->ignore_query = true;
+$router->routes = array(0 => array());
-$router->routes = array(
- 0 => array(
- "^/$" => "modules/home/index.php",
- "^/project/([a-zA-Z0-9_-]+)$" => array("target" => "modules/project/index.php",
- "authenticator" => "authenticators/project.php",
- "auth_error" => "modules/error/project.php",
- "_page_type" => "project"),
- "^/project/([a-zA-Z0-9_-]+)/tickets$" => array("target" => "modules/project/tickets/index.php",
- "authenticator" => "authenticators/project.php",
- "auth_error" => "modules/error/project.php",
- "_page_type" => "project"),
- "^/project/([a-zA-Z0-9_-]+)/ticket/([0-9]+)$" => array("target" => "modules/project/tickets/view.php",
- "authenticator" => "authenticators/project.php",
- "auth_error" => "modules/error/project.php",
- "_page_type" => "project"),
- )
-);
+foreach($routes as $category => $items)
+{
+ foreach($items as $route => $target)
+ {
+ $router->routes[0][$route] = $presets[$category];
+ $router->routes[0][$route]['target'] = $target;
+ }
+}
+
+/* Route the actual request */
$router->RouteRequest();
-if(empty($router->uVariables['page_type']))
+/* Render the resulting page */
+
+if(empty($router->uVariables['page_type']) || $router->uVariables['page_type'] == "home")
{
$sContents = NewTemplater::Render("home/layout", $locale->strings, array(
"contents" => $sPageContents