Автоподдомены и если поддомен отдаёт 404
Как работают адреса вида ivan.beautynote.ru и что проверить, если такой адрес не открывается.
Как это устроено
Платформа многопользовательская: любой поддомен первого уровня beautynote.ru попадает в тот же код, а PHP по заголовку Host определяет, какого мастера показать. Поэтому для каждого нового мастера создавать что-то в хостинге не нужно — важна одна настройка на уровне хостинга.
Требование к хостингу
- Для домена beautynote.ru должен существовать wildcard-поддомен *.beautynote.ru, указывающий в ту же директорию, что и основной сайт
- SSL-сертификат должен покрывать поддомены (wildcard-сертификат Let's Encrypt)
- mod_rewrite активен, наш .htaccess лежит в корне сайта
ISPmanager: «Автоподдомены → в поддиректорию домена»
ISPmanager умеет принимать любой поддомен, но в режиме «в поддиректории» Apache ищет файл в отдельной папке вида data/www/ivan.beautynote.ru. Папка пустая — Apache отдаёт 404 ещё до PHP, и в логах нет обращений к index.php. Платформа решает это симлинками: каждая папка поддомена заменяется на ссылку на корень основного сайта.
- В панели ISPmanager оставьте «Автоподдомены» включёнными в режиме «в поддиректории домена» — трогать другие поля не нужно.
- Зайдите в админку beautynote.ru/admin/domains и нажмите «Синхронизировать все симлинки».
- Платформа сама создаст симлинки data/www/ivan.beautynote.ru → data/www/beautynote.ru для всех активных мастеров.
- Откройте ivan.beautynote.ru — сайт мастера должен открыться.
Чек-лист при 404 на поддомене
- Откройте ivan.beautynote.ru. Если видна серая страница Apache «Not Found» (без оформления сайта) — запрос не дошёл до PHP: проблема в настройке хостинга.
- Проверьте, что в панели хостинга для домена включены автоподдомены и что домен добавлен с тем же IP и тем же корневым каталогом, что и основной сайт.
- В админке beautynote.ru/admin/domains нажмите «Синхронизировать все симлинки» — колонка «Статус» покажет, для каких мастеров папка поддомена не указывает на корень платформы.
- Выпустите wildcard-сертификат для *.beautynote.ru, иначе браузер будет ругаться на HTTPS.
- Убедитесь, что slug мастера существует: страница 404 сайта с текстом «Мастер не найден» означает, что PHP работает, но в базе нет такого slug или сайт отключён.
- Проверьте консолью на сервере: php tools/diagnostic.php ivan.beautynote.ru — она покажет, чем именно платформа считает этот хост.
Что проверяет diagnostic.php
- наличие index.php, .htaccess, .env и прав на папки
- совпадение PLATFORM_DOMAIN с запрошенным хостом
- связку «slug → запись в таблице tenants»
- состояние симлинка публичной директории поддомена
- назначенный шаблон и наличие его файлов на диске
- включённые модули тенанта