Доброго дня, хочу реализовать многосайтовость (десятки-сотни сайтов) на одном экземпляре CMS.
Интересует 2 вопроса, первый, по существу:
1) Достаточно ли проверять и роутить запросы на основе $_SERVER['HTTP_HOST'] \ $_SERVER['SERVER_NAME'] ? Возможно имеет смысл использовать $_ENV ?
Мысль следующая: грубо говоря, если $_SERVER['SERVER_NAME'] == 'example.com', подтягивать настройки для example.com и передавать в бутстрап;
$domens = array ('example.com');
if ($_SERVER['HTTP_HOST'] == $_SERVER['SERVER_NAME']) {
// Мы знаем, что HTTP HOST, и даже SERVER_NAME можно подделать,
// поэтому проверяем корректность данных
if (!preg_match("/^[a-z0-9.]+$/i", $_SERVER['SERVER_NAME'])) {
echo 'Некорректный HTTP HOST или SERVER_NAME';
exit();
}
$host = $_SERVER['SERVER_NAME'];
// Проверяем если запрошенный хост в нашей базе (предположим база в массиве)
if (in_array($host, $domens)) {
// передаем конфиги и запускаем сайт
}
} else {
echo 'HTTP_HOST != SERVER_NAME. Why?';
exit();
}
(надеюсь понятно, что это только для примера и в реальном проекте код будет отличатся)
Имеет ли смысл проверять $_SERVER['HTTP_HOST'] == $_SERVER['SERVER_NAME'] ?
На сколько это правильное решение? Есть ли альтернативы?
Второй вопрос, продолжение первого, какие минусы есть у этого решения? Может быть реализация такой функциональности делается совсем иначе?