Chắc chắn là có thể, đối với một tập lệnh PHP .htaccess của bạn có thể trông giống như sau:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Thao tác này sẽ ghi lại tất cả các URL ngoại trừ tên thư mục hoặc tệp thành "index.php? Url =THE-TYPED-ADDRESS".
Trong index.php, bạn có thể sử dụng giá trị $ _GET ['url'] để xác định 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
}
Đây rõ ràng là một ví dụ được đơn giản hóa quá mức và bạn thực sự nên đảm bảo rằng mình thoát đúng cách và sử dụng các câu lệnh đã chuẩn bị để tránh rủi ro bảo mật. Ngoài ra, nếu bạn sử dụng MySQLi hoặc một lớp truy cập cơ sở dữ liệu khác, mã chuẩn bị / thực thi / tìm nạp của bạn sẽ thay đổi một chút.