.htaccess
RewriteEngine On
RewriteRule ^game/([0-9]+)/ /game.php?newid=$1
game.php
if (isset($_GET['id'])) {
$row = dbgetrow("SELECT * FROM games WHERE id = %s",$_GET['id']);
if ($row) {
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: /game/".$row['id']."/".seo_title($row['name']));
} else {
Header( "HTTP/1.1 404 Not found" );
}
exit;
}
if (isset($_GET['newid'])) $_GET['id'] = $_GET['newid'];
это код, который работает для меня, но считается псевдокодом, чтобы дать вам идею.
Функция dbgetrow () для получения строки из базы данных
и функция seo_title () может быть такой:
function seo_title($s) {
$s = strtolower(trim($s));
$s = str_replace(" ","-",$s);
$s = preg_replace('![^a-z0-9-]!',"",$s);
$s = preg_replace('!\-+!',"-",$s);
return $s;
}
Вся концепция была взята из SO:)
единственная часть games/1/
действительно важна, в то время как остальные могут быть чем угодно, название игры только для целей SEO. Возьмите название этого вопроса, например:
Как я могу использовать в .htaccess?
:)