2016-03-27 6 views
1

Ich habe einen Server mit apache2, das all HTTP-Anfragen an HTTPS umleitet:Apache2 RedirectMatch nicht in konkretem Fall arbeitet

<VirtualHost *:80> 
     ServerName www.mydomain.com.au 
     RedirectMatch permanent ^/?(.*) https://www.mydomain.com.au/$1 
</VirtualHost> 

<VirtualHost *:80> 
     ServerName mydomain.com.au 
     RedirectMatch permanent ^/?(.*) https://www.mydomain.com.au/$1 
</VirtualHost> 

Es arbeitet perfekt mit der www-Domain, aber wenn ich versuche, die ‚nackte‘ Domain zuzugreifen I erhalten Sie den Fehler:

Not Found 
The requested URL/was not found on this server. 

die verblüffende Sache ist, dass die HTTPS-Version funktioniert:

<VirtualHost *:443> 
     ServerName mydomain.com.au 
     RedirectMatch permanent ^/?(.*) https://www.mydomain.com.au/$1 
     #... 
</VirtualHost> 

Wenn ich zum Beispiel versuche, https://mydomain.com.au/contact abzurufen, wird es korrekt zu https://www.mydomain.com.au/contact umleiten. Es wird jedoch fehlschlagen, wenn ich dasselbe mit HTTP mache. Warum?

Antwort

1

Sie sollten nicht mehr als 2 Einträge für VirtualHost *:80 haben Sie ServerAlias für www verwenden können und einen einzelnen Eintrag haben:

<VirtualHost *:80> 
     ServerName mydomain.com.au 
     ServerAlias www.mydomain.com.au 
     RedirectMatch permanent ^/?(.*) https://www.mydomain.com.au/$1 
</VirtualHost> 

ServerAlias erklärt alternative Namen, die verwendet werden können die gleichen Ort wie in ServerName zu adressieren.

0

Es stellt sich heraus, dass das Problem war, dass meine VirtualHost-Einstellungen in Websites-available/000-default.conf überschrieben wurden. Ich änderte das darin, um die von Anubhava vorgeschlagene Konfiguration zu haben, und es funktioniert gut.