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.conf
Datei (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.php
Datei 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