/**
* Определитель типа устройства...
*
* return string
*/
function getTypeDevice()
{
/**
* Какая-то логика для определения типа устройства
* return mobile|desktop|searchEngine
*/
}
/**
* Получение правильной ссылки на основе карты...
*
* @param $path
* @param $links
*
* return string
*/
function getLink($path, $links) {
$patterns = array_keys($links);
$replacements = array_values($links);
return preg_filter($patterns, $replacements, $path);
}
/**
* Основная логика для редиректа пользователя на нужную ссылку основываясь на карте ссылок,
* с проверкой на нахождение на нужном домене и не срабатывание для поисковых машин
*/
if (($deviceType = getTypeDevice()) != 'searchEngine') {
$domain = $_SERVER['HTTP_HOST'];
$path = $_SERVER['REQUEST_URI'];
$link = null;
// Карта ссылок для обычной версии сайта
$linksDesktop = [
'/\/post([\d]+)\.php/i' => '/post.php?id=$1',
'/\/tag\.php\?id=([\w]+)/i' => '/dir/t.php?tag=$1',
'...' => '...'
];
// Карта ссылок для мобильной версии
$linksMobile = [
'/\/post\.php\?id=([\d]+)/i' => '/post$1.php',
'/\/dir\/t.php\?tag=([\w]+)/i' => '/tag.php?id=$1',
'...' => '...'
];
if ('desktop' == $deviceType && $domain != 'desktop.site.com') {
$link = getLink($path, $linksMobile);
}
if ('mobile' == $deviceType && $domain != 'mobile.site.com') {
$link = getLink($path, $linksDesktop);
}
// Если удалось определить ссылку, т.е не пусто, то выполняет на неё редирект.
if (!empty($link)) {
header('Location: /' . ltrim($link, '/'));
exit;
}
}
Если kphp то что я думаю то по идее можно поставить Phalcon , но что-то мне подсказывает что он может и не встать.