Wie kann ich in Apache/local sowohl den Verzeichniszugriff als auch den Named-Host-Zugriff unterstützen?

Wie kann ich in Apache/local sowohl den Verzeichniszugriff als auch den Named-Host-Zugriff unterstützen?

Ich verstehe, wie man Directory- und (glaube ich) VirtualHost-Direktiven verwendet. Ich verstehe außerdem, dass ich sie nicht mischen kann (obwohl ich sie verschachteln kann). Wenn ich sie mische, erhalte ich die Fehlermeldung „404 nicht gefunden“ für die Directory-URLs, die früher funktionierten.

Wie kann ich dann das Durchsuchen von URLs wie „localhost/my/website“ und „mydomainname.com“ in meiner Konfigurationsdatei unterstützen?

Meine Begründung: Ich möchte, dass mydomainname.com https verwendet, während meine anderen Websites http verwenden. In meiner HOSTS-Datei (meinem lokalen DNS) habe ich mydomainname.com bereits in 127.0.0.1 übersetzt, daher denke ich, dass ich kurz vor einer Lösung stehe.

Ich arbeite schon seit Stunden daran und komme nicht wirklich weiter. Die Apache-Dokumentation hilft mir nicht weiter.

Im Idealfall könnte mir jemand skizzieren, wie ich mein Ziel erreiche.

Antwort1

Aufgrund der Frage glaube ich, dass Sie den Unterschied zwischen Directoryund nicht verstehen VirtualHost.

<Directory>und </Directory>werden verwendet, um eine Gruppe von Anweisungen einzuschließen, die nur für das benannte Verzeichnis, die Unterverzeichnisse dieses Verzeichnisses und die Dateien innerhalb der jeweiligen Verzeichnisse gelten.

<VirtualHost>und </VirtualHost>werden verwendet, um eine Gruppe von Anweisungen einzuschließen, die nur für einen bestimmten virtuellen Host gelten. Jede Anweisung, die im Kontext eines virtuellen Hosts zulässig ist, kann verwendet werden. Wenn der Server eine Anforderung für ein Dokument auf einem bestimmten virtuellen Host empfängt, verwendet er die im Abschnitt eingeschlossenen Konfigurationsanweisungen <VirtualHost>.

Die <Directory>Direktive steuert nicht „URLs vom Verzeichnistyp“.DerDocumentRootund dasAliasAnweisungen steuern, wo im Dateisystem der Inhalt gefunden wird. Diese Anweisungen können direkt in der Serverkonfiguration oder innerhalb eines verwendet werden <VirtualHost>.

Für das, was Sie erreichen möchten, benötigen Sie lediglich zwei <VirtualHost>s mit unterschiedlichen DocumentRoots, zB

Listen 80
<VirtualHost *:80>
    DocumentRoot "/var/www"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/examplecom"
    ServerName example.com
</VirtualHost>

Jetzt haben Sie beides http://localhost/examplecom/und http://example.com/für dieselbe Website. Wenn sich die Websites nicht alle im selben Dateisystemverzeichnis befinden, müssen Sie Aliases verwenden, z. B.

Listen 80
<VirtualHost *:80>
    DocumentRoot "/var/www"
    ServerName localhost

    Alias "/examplecom" "/home/user/sites/example.com"
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/home/user/sites/example.com"
    ServerName example.com
</VirtualHost>

verwandte Informationen