Leiten Sie alle Subdomains zur Hauptdomain im virtuellen Host um.

Leiten Sie alle Subdomains zur Hauptdomain im virtuellen Host um.

Ich möchte einfach alle Subdomains, die nicht bereits in einem virtuellen Host erwähnt sind, ServerNameauf die leere Subdomain umleiten. Ich habe versucht, dies nach allen anderen virtuellen Hosts dieser Domain zu meiner httpd.conf hinzuzufügen.

<VirtualHost *:80>
    ServerName *.example.com
    RedirectPermanent / http://example.com/
</VirtualHost>

Der Abschnitt für die leere Subdomäne (vorher geladen) lautet wie folgt.

<VirtualHost *:80>
    DocumentRoot /var/www/example/htdocs
    ServerName example.com
    <Directory /var/www/example/htdocs>
        Options FollowSymLinks
        AllowOverride All
        Order Allow,Deny
        Allow from all
    </Directory>
</VirtualHost>

Nach dem Neustart des httpd-Dienstes wird mir 403 Forbidden angezeigt, wenn ich meinen Browser auf zeige abc.example.com. Was mache ich falsch? Ich hoffe, dass kein regex-basiertes Matching wie beschrieben erforderlich ist.in anderen Antwortenfür diese einfache Aufgabe.

Antwort1

Fügen Sie einfach einen Block unter dem Hauptblock in IhremvhostKonfigurationsdatei. Geben Sie einfach ServerAliasden Platzhalter *für die Subdomains an. Geben Sie abschließend die Umleitungsadresse mit an RedirectPermanent.

Listen 80
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ServerName example.com

        <Directory /var/www/html/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerAlias *.example.com
    RedirectPermanent / http://example.com/
</VirtualHost>

Antwort2

<VirtualHost *:80>
    DocumentRoot "/var/www/example"
    ServerName *.example.org
    RedirectPermanent / http://example.com/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/example/htdocs"
    ServerName example.org
    <Directory /var/www/example/htdocs>
         Options FollowSymLinks
         AllowOverride All
         Order Allow,Deny
         Allow from all
    </Directory>
</VirtualHost>

Bei dem Fehler 403 haben Sie möglicherweise kein Standarddokument festgelegt. Daher wird versucht, auf den Ordnerinhalt zuzugreifen. Als Standarddokument können Sie beispielsweise verwenden

DirectoryIndex index.html Index.htm index.php

verwandte Informationen