Wie kann ich ServerAlias ​​auf den jeweiligen Servernamen umleiten?

8

Ich möchte alle example.org auf www.example.org umleiten. Das folgende Beispiel macht genau das, aber es hat viel Rauschen und ist daher schwer zu warten und fehleranfällig:

<VirtualHost 192.0.2.123:80>
        ServerName      example.org
        RedirectPermanent       /               http://www.example.org
</VirtualHost>
<VirtualHost 192.0.2.123:80>
        ServerName      www.example.org
        DocumentRoot    /usr/local/www/example
</VirtualHost>

Wissen Sie zufällig, ob es für das Ganze oben eine kürzere Version gibt?

So etwas wie diese Pseudokonfiguration :

<VirtualHost 192.0.2.123:80>
        ServerName      www.example.org
        ServerAlias     example.org
#       Redirect-Every-ServerAlias-To-ServerName
        DocumentRoot    /usr/local/www/example
</VirtualHost>

Auf diese Weise müsste ich nur jede Subdomain bereitstellen, unter der umgeleitet werden soll ServerAlias?

user569825
quelle
Sie können mod_rewrite verwenden, um alle Anfragen an example.org an www.example.org umzuleiten - nur 2 Zeilen (also 3 einschließlich der Engine-Aktivierungsanweisung).
LazyOne

Antworten:

13

Verwenden Sie mod_rewrite, ungefähr so:

RewriteEngine On
RewriteCond %{HTTP_HOST}  !^www.example.org [nocase]
RewriteRule ^(.*)$        http://www.example.org$1 [last,redirect=301]
OG
quelle
1
Eine kleine Verbesserung besteht darin,! ^ Www.example.org in Ihrer RewriteCond zu verwenden, damit es weiterhin funktioniert, unabhängig davon, wie viele ServerAlias-Anweisungen Ihr vhost hat.
Ladadadada
Sie können auch %{SERVER_NAME}in den Ausdrücken
OrangeDog
0
<VirtualHost *:80>
    ServerName www.example.org
    DocumentRoot /usr/local/www/example
</VirtualHost>

<VirtualHost *:80>
    ServerName example.org
    ServerAlias *.example.org another.org *.another.org
    Redirect 301 / http://www.example.org/
</VirtualHost>

Stellen Sie sicher, dass Sie sie in die richtige Reihenfolge bringen, www zuerst

Jan.
quelle
1
Ihre Antwort ist im Wesentlichen dieselbe wie das Beispiel, das er für das gegeben hat, was er gerade tut.
Ladadadada