Назад | Перейти на главную страницу

Каноническое перенаправление на динамические массовые виртуальные хосты на 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 должен указывать на каталог diff, чем def.domain.com), но вся проблема с www для меня загадка.

Я использую динамические массовые виртуальные хосты, поэтому серверу не нужно перезагружаться после каждой регистрации приложения. Если есть другой способ, это нормально, если apache не перезапускается каждый раз.

Как я могу этого добиться? В худшем случае, если бы был способ перенаправить на сервер по умолчанию, если он не был найден, я всегда мог бы выполнить проверку через PHP или что-то в этом роде, но я чувствую, что это немного взломано вместе, и должен быть более эффективный путь.

Заранее спасибо!

строка 458 модулей / mappers / mod_vhost_alias.c

if (strncasecmp(name,"www.",4) == 0) {
    name+=4;
}

Думаю, я бы заглянул в -d directory опция для RewriteCond, чтобы проверить, существует ли каталог для этого виртуального хоста, и, если он не существует, явно перенаправить на www.example.com. Это позволяет людям не быть шокированным, когда они получают страницу, которую они не ожидают, и предотвращает многократное индексирование поисковыми системами.