Каноническое перенаправление на динамических массовых виртуальных хостах на Apache

Каноническое перенаправление на динамических массовых виртуальных хостах на Apache

У меня есть веб-приложение на 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;
}

Связанный контент