Kanonische Umleitung auf Dynamic Mass Virtual Hosts auf Apache

Kanonische Umleitung auf Dynamic Mass Virtual Hosts auf Apache

Ich habe eine Webanwendung auf Apache, die es Benutzern ermöglicht, ihre Domäne auf den Server zu verweisen.

Im Moment verwende ich die dynamischen Massen-Virtual-Hosts von Apache mit dem Eintrag VirtualDocumentRoot /www/hosts/%0/docs

Bei www.companydomain.com verweist es also auf /www/hosts/www.companydomain.com/docs

Das Problem ist, wenn der Benutzer zu companydomain.com geht, wird es auf /www/hosts/companydomain.com/docs verweisen

Gibt es eine einfache Möglichkeit, Apache automatisch prüfen zu lassen, ob ein Verzeichnis für den virtuellen Host vorhanden ist, und wenn nicht, nach dem Hostnamen mit „www.“ davor zu suchen? Andere Subdomains sind in Ordnung (d. h. abc.domain.com sollte auf ein anderes Verzeichnis als def.domain.com verweisen), aber die ganze „www“-Sache ist mir ein Rätsel.

Ich verwende dynamische Massen-Virtualhosts, damit der Server nicht nach jeder Registrierung für die Anwendung neu gestartet werden muss. Wenn es eine andere Möglichkeit gibt, ist das in Ordnung, solange Apache nicht jedes Mal neu gestartet wird.

Wie kann ich das erreichen? Im schlimmsten Fall könnte ich, wenn es eine Möglichkeit gäbe, zu einem „Standard“-Speicherort auf dem Server umzuleiten, wenn dieser nicht gefunden wird, immer eine Prüfung über PHP oder so durchführen, aber ich habe das Gefühl, dass das ein bisschen zusammengehackt ist und es einen effizienteren Weg geben muss.

Dank im Voraus!

Antwort1

Ich denke, ich würde mir die Option von RewriteCond ansehen, -d directoryum zu testen, ob für diesen virtuellen Host ein Verzeichnis existiert, und wenn nicht, explizit auf www.example.com umzuleiten. So sind die Leute nicht schockiert, wenn sie eine unerwartete Seite erhalten, und es verhindert eine Mehrfachindizierung durch Suchmaschinen.

Antwort2

Zeile 458 von module/mappers/mod_vhost_alias.c

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

verwandte Informationen