У меня есть веб-приложение на Apache, которое позволяет пользователям указывать свой домен на сервере.
Сейчас я использую динамические массовые виртуальные хосты Apache с записью VirtualDocumentRoot /www/hosts/%0/docs
Таким образом, www.companydomain.com указывает на /www/hosts/www.companydomain.com/docs
Проблема в том, что когда пользователь заходит на companydomain.com, он будет указывать на /www/hosts/companydomain.com/docs.
Есть ли простой способ автоматически заставить Apache проверять, существует ли каталог для виртуального хоста, и если нет, искать имя хоста с "www." перед ним? Другие поддомены подходят (например, abc.domain.com должен указывать на другой каталог, нежели def.domain.com), но вся проблема с "www" для меня загадка.
Я использую динамические массовые виртуальные хосты, чтобы сервер не перезапускался после каждой регистрации приложения. Если есть другой способ, это нормально, пока apache не перезапускается каждый раз.
Как мне это сделать? В худшем случае, если бы был способ перенаправить на "место по умолчанию" на сервере, если оно не найдено, я всегда мог бы сделать проверку через PHP или что-то еще, но мне кажется, что это немного хакерски и должен быть более эффективный способ.
Заранее спасибо!
решение1
Я думаю, я бы рассмотрел -d directory
возможность RewriteCond проверить, существует ли каталог для этого vhost, и если его нет, явно перенаправить на www.example.com. Это позволяет людям не быть шокированными, когда они получают страницу, которую они не ожидают, и предотвращает множественную индексацию поисковыми системами.
решение2
строка 458 файла modules/mappers/mod_vhost_alias.c
if (strncasecmp(name,"www.",4) == 0) {
name+=4;
}