ну первое, что мне кажется, нужно отказаться от htaccess в данном случае.
Идем верстать в РНР!
Первое что бы сделал я - так это определил - а есть ли в ссылке id.
И сделал бы это примерно так:
if (!empty($_GET['id']) and is_numeric($_GET['id'])) {
// тут остальной еще не придуманный код...
}
Если у вас классический транслит от заголовков новостей для чпу - то код выше это просто офигительный помошник на первом этапе.
пойдем дальше.
if (!empty($_GET['id']) and is_numeric($_GET['id'])) {
$url_id = $_GET['id'];
// теперь как бэ нам надо получить тот самый классический урл-транслит от заголовка новости.
// примерно организовываем это так:
$c_url = reset($sql->select(array('table' => 'news', 'where' => array("id = $url_id"))));
$cl_url = (!empty($c_url['url']) ? $c_url['url'] : $c_url['id']);
// ну вот и получили мы заветный url? но нам то надо в чпу это все забацать!
foreach (($rufus_file ? $rufus_file : parse_ini_file(rufus_file, true)) as $type_k => $type_v){
if (is_array($type_v)){
foreach ($type_v as $k => $v){
if ($type_k == 'home'){
$rlink['rlink'][$k] = cute_get_link($c_url, $k);
}
$rlink['rlink'][$type_k.'/'.$k] = cute_get_link($c_url, $k, $type_k);
}
}
}
// после чего делаем наш мега редирект:
header('HTTP/1.1 301 Moved Permanently'); // чоб роботы кончали от удовольствия
@header('Location: '.$rlink['rlink']['post']); // чоб человек попал куда надо, ночью без фонарика прям ))
}
Однако, и естественно, я не тестировал - проверте что выдает переменная $rlink['rlink']['post']. Я к тому, что подставляется ли туда адрес самого сайта - или это ссылка относительная...
2 минуты и 28 секунд спустя:
это хозяйство все подставить куда нибудь после подключения head.php
Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!