← Catalog Matrix

Deployment Execution Blueprint

---
title: Lightweight PHP Flat-File Regex Route Parser
description: A bare-metal PHP regex script designed to handle clean documentation permalinks safely without relying on heavy MVC engine frameworks.
category: Server Config
slug: php-flatfile-regex-route-parser
keywords: php regex routing, flat file router, custom php redirect, clean url rewriting script
---

### Overview & Problem Matrix
Deploying heavy, bloated MVC web application frameworks just to parse clean, human-readable slug URLs (like `/my-technical-blueprint`) on a flat-file database-free website introduces unnecessary performance overhead and complex routing file structures. 

However, leaving ugly query strings exposed (like `/?page=post&name=blueprint`) damages your organic Search Engine Optimization (SEO) score and degrades the end-user experience. You need a zero-dependency, bare-metal router that uses fast Regular Expressions (`preg_match`) to intercept incoming HTTP URI request paths, sanitize parameters, and forward traffic internally to the correct layout files safely.

### Implementation Guide & Setup Steps
To implement this high-performance URL rewriting routing layer inside your application workspace, execute these development steps:

1. Stage Your Server Redirection Rule: Ensure your web server forwards all incoming file requests directly to your primary router script.
   
   # For Apache (.htaccess environments), place this fallback engine rule in your root:
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ router.php [QSA,L]

2. Save the Core Route Interceptor: Save the optimized automation logic outlined below inside your root public web directory as `router.php`:
   $ touch router.php

3. Expand Your Route Matching Arrays: Add, modify, or extend the array pairs inside the `$routes` block array to seamlessly handle new nested directory structures or custom category filter views.

<?php
// router.php - Bare-Metal Request Interceptor & Pattern Resolver

$request_uri = sep_sanitize_request($_SERVER['REQUEST_URI']);

function sep_sanitize_request($uri) {
    // Strip trailing query variables cleanly to avoid matching breaks
    if (($pos = strpos($uri, '?')) !== false) {
        $uri = substr($uri, 0, $pos);
    }
    return trim($uri, '/');
}

// Global Route Mapping Matrix
$routes = [
    // Matches dynamic alphanumeric documentation handles safely -> routes to post.php
    '/^([a-zA-Z0-9\-]+)$/i' => 'post.php?name=$1',
    // Matches explicit nested technical categories -> routes to index.php
    '/^category\/([a-z\-]+)$/i' => 'index.php?filter=$1'
];

$matched = false;
foreach ($routes as $pattern => $destination) {
    if (preg_match($pattern, $request_uri, $matches)) {
        // Shift dynamic matches cleanly into the internal request state
        $resolved_url = preg_replace($pattern, $destination, $request_uri);
        
        // Parse the target query params into global variables safely
        $parts = parse_url($resolved_url);
        if (isset($parts['query'])) {
            parse_str($parts['query'], $query_params);
            // Safely merge parameters back into the global superglobal array
            $_GET = array_merge($_GET, $query_params);
        }
        
        // Dynamic Resolution Fix: Extract the targeted script path base name (e.g., post.php or index.php)
        $target_script = isset($parts['path']) ? $parts['path'] : 'index.php';
        
        if (file_exists($target_script)) {
            include($target_script);
        } else {
            break;
        }
        
        $matched = true;
        break;
    }
}

if (!$matched) {
    header("HTTP/1.0 404 Not Found");
    echo "<h1>404 Error: Resource Signature Missing</h1>";
    exit;
}