Apache-Neuschreibung zum Zuweisen von Ordnern zu Domänen

Apache-Neuschreibung zum Zuweisen von Ordnern zu Domänen

Bitte weisen Sie mich in die richtige Richtung.

Ich verwende .htaccess, um Domänen auf meinem Server einzurichten.

Ich muss auf domain.com zugreifen, um auf Dateien aus dem Ordner /domain.com/* zuzugreifen. Wenn eine Datei nicht existiert, laden Sie /domain.com/index.php und domain.com/images/image.jpg sollte die Datei /domain.com/images/image.jpg laden.

Eine Sache ist, dass alles geladen werden sollte, ohne 302-Benachrichtigungen zum Verschieben der Datei an den Browser zu senden.

Vielen Dank für Ihre Hilfe!

Antwort1

Wenn Sie viele Domänen haben oder auch nur wenige Domänen, die aber alle mehr oder weniger die gleiche Konfiguration haben, ist dies die Art von Situation, diedynamisches virtuelles Massenhostinggemacht ist. So etwas würde in Ihre httpd.confDatei (oder in eine Datei, die in enthalten ist httpd.conf) gehören:

UseCanonicalName Off
VirtualDocumentRoot /var/www/%0/htdocs
ErrorLog /var/www/logs/error_log
CustomLog /var/www/logs/access_log combined

Ich würde auch vorschlagen

DirectoryIndex index.php

um die index.phpDatei in ein Verzeichnis zu laden, wenn der Client keinen Dateinamen angibt.

Antwort2

Sie sollten für jede einzelne Domäne, die Sie einem Dateipfad zuordnen möchten, einen virtuellen Host erstellen und das DocumentRoot jedes virtuellen Hosts auf den tatsächlichen Pfad im Dateisystem festlegen. Dann sollten Sie sicherstellen, dass Sie einen STANDARD-vhost haben, damit alle anderen Anfragen für Domänen, die nicht eingerichtet sind, den STANDARD-vhost verwenden. Schließlich sollten Sie einen benutzerdefinierten 404-Fehlerhandler erstellen, damit, wenn die angeforderte Datei nicht existiert, alternative Inhalte bereitgestellt werden. Sie müssen eine PHP-Datei namens custom_404.php erstellen, die eine allgemeine Meldung und Ihre /images/image.png anzeigt.

# Default Domain (Undefined domains will fall back to this)
<VirtualHost *:80>
    ServerAlias www.defaultdomain.com
    DocumentRoot /var/www/default/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/default/logs/error_log
    CustomLog /var/www/default/logs/access_log combined
</VirtualHost>

# domain1.com
<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /var/www/domain1.com/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/domain1.com/logs/error_log
    CustomLog /var/www/domain1.com/logs/access_log combined
</VirtualHost>

# domain2.com
<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /var/www/domain2.com/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/domain2.com/logs/error_log
    CustomLog /var/www/domain2.com/logs/access_log combined
</VirtualHost>

Hoffe das hilft!

-Kevin

Antwort3

Sie müssen virtuelle Hosts verwenden, um dies zu organisieren. Hier ist ein Beispiel für eine virtuelle Hostdatei.

<VirtualHost *:80>
    ServerName example.net
    ServerAlias www.example.net
    ServerAdmin [email protected]
    DocumentRoot /var/www/vhosts/www.example.net/html
    ErrorLog /var/www/vhosts/www.example.net/logs/errors.log
    Customlog /var/www/vhosts/www.example.net/logs/access.log combined

</VirtualHost>

Platzieren Sie diese Datei in /etc/httpd/conf.d/ und nennen Sie sie beispielsweise vhost_example.net.conf

Und fügen Sie dann in /etc/httpd/conf/httpd.conf beispielsweise die letzte Zeile hinzu

Schließen Sie /etc/httpd/conf.d/vhost_example.net.conf ein.

(oder fügen Sie einfach /etc/httpd/conf.d/*.conf ein) Und denken Sie daran, in der Datei httpd.conf diese Zeile unkommentiert zu lassen

NameVirtualHost *:80

verwandte Informationen