Насправді не стовідсоткове динамічне рішення - я просто намагався розібратися в цьому, і через різні розширення домену (DTL) це завдання було б справді складним без фактичного розбору всіх цих розширень та перевірки їх кожного разу:
.com vs .co.uk vs org.uk
Найбільш надійним варіантом є визначення константи (або введення в базу даних тощо), яка зберігає фактичне доменне ім’я та видаляє його з $_SERVER['SERVER_NAME']
використанняsubstr()
defined("DOMAIN")
|| define("DOMAIN", 'mymaindomain.co.uk');
function getSubDomain() {
if (empty($_SERVER['SERVER_NAME'])) {
return null;
}
$subDomain = substr($_SERVER['SERVER_NAME'], 0, -(strlen(DOMAIN)));
if (empty($subDomain)) {
return null;
}
return rtrim($subDomain, '.');
}
Тепер , якщо ви використовуєте цю функцію в http://test.mymaindomain.co.uk
це дасть вам test
або якщо у вас є кілька рівнів суб-домену , http://another.test.mymaindomain.co.uk
ви отримаєте another.test
- якщо ви , звичайно , не оновлюватиDOMAIN
.
Я сподіваюся, що це допомагає.