Lightweight PHP Flat-File Regex Route Parser
A bare-metal PHP regex script designed to handle clean documentation permalinks safely without relying on heavy MVC engine frameworks.
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:
- 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]
- Save the Core Route Interceptor: Save the optimized automation logic outlined below inside your root public web directory as
router.php:
$ touch router.php
- Expand Your Route Matching Arrays: Add, modify, or extend the array pairs inside the
$routesblock 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; }
Community Engineering Notes
No technical implementations have been appended yet.