Selvfølgelig er det muligt, for et PHP-script kan din .htaccess se sådan ud:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Dette vil omskrive alle URL'er undtagen mappe- eller filnavne til "index.php?url=THE-TYPED-ADDRESS".
I din index.php kan du derefter bruge værdien af $_GET['url'] til at bestemme ID:
// init DB layer
if (isset($_GET['url']) && !empty($_GET['url'])) {
$url = my_filter_function($_GET['url']); // filter input
$pdo = my_get_pdo_function(); // get configured PDO objected
$query = "SELECT id FROM my_router_table WHERE url = ? LIMIT 1"; // use prepared statements for security/performance reasons
$stmt = $pdo->prepare($query);
$stmt->bindValue(1, $url, PDO::PARAM_STR); // bind the value as a string
// ternary operator expanded for readability
if ($stmt->execute()) {
$id = $stmt->fetch(PDO::FETCH_ASSOC);
} else {
$id = -1; // 404 page
}
// fetch content/render page according to ID
}
Dette er naturligvis et alt for forenklet eksempel, og du bør virkelig sørge for at undslippe dine input og bruge forberedte erklæringer for at undgå sikkerhedsrisici. Hvis du bruger MySQLi eller et andet databaseadgangslag, vil din forberedelse/udførelse/hente-kode også variere en smule.