Richtige Apache-Umleitung von http zu https

Richtige Apache-Umleitung von http zu https

Ich habe einen neuen virtuellen Host für eine neue Site auf meinem Server eingerichtet, aber er verhält sich merkwürdig, obwohl er genau dieselben Einstellungen wie meine ursprüngliche Site hat.

Ich möchte, dass alle Anfragen auf HTTPS umgeleitet werden, ganz einfach. Auf meiner Hauptsite (der funktionierenden) habe ich dies in der VirtualHostKonfiguration angegeben und in .htaccesshabe ich eine zusätzliche Regel angegeben, um kurze URLs zuzulassen. Das Problem auf der nicht funktionierenden Site besteht insbesondere darin, dass, wenn ich versuche, zu zu gehen example.com/url, die Umleitung zu geht https://example.comurlund das Notwendige /aus der URL entfernt.

Ich habe die genaue Konfiguration von der funktionierenden Site in die neue Datei kopiert, VirtualHostdaher bin ich mir nicht sicher, warum es auf der neuen nicht funktioniert. Meine DNS-Einträge für beide Sites verwenden alle A-Einträge, um darauf zu verweisen, es passieren keine Umleitungen oder ähnliches auf DNS-Ebene. Ich habe versucht , am Ende der Zeilen im folgenden Code ein „“ einzufügen, aber das Problem wurde nicht behoben. Der Server ist Ubuntu 14.04 und Apache ist Version 2.4.7. Beide Sites sind separate Domänennamen mit separaten verwendeten Dateien, aber sie werden auf demselben Server mit derselben IP-Adresse gehostet. Wie kann ich dieses Problem beheben?.htaccess/Redirect.conf

Der entsprechende Code im VirtualHost:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com
</VirtualHost>

Und in .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

Falls es hilft/wichtig ist, dies ist die SSL-Konfiguration in meiner VirtualHost-Datei, obwohl sie ganz am Anfang der Datei außerhalb aller anderen Anweisungen steht:

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdo$
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

Und dies ist die Konfiguration speziell für VirtualHostdie Site:

<VirtualHost *:443>
    ServerName example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example
    ErrorLog ${APACHE_LOG_DIR}/errorexample.log
    Options -Indexes

    SSLEngine on
    SSLCertificateFile /etc/ssl/example/examplecert.crt
    SSLCertificateKeyFile /etc/ssl/example/examplekey.key
    SSLCertificateChainFile /etc/ssl/chain/class1.pem
</VirtualHost>

Antwort1

So leiten Sie zu HTTPS weiter:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Sie benötigen jedoch einen virtuellen Host für SSL:

NameVirtualHost *:443
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

NOTIZ:Sie müssen ein SSL-Zertifikat erstellen... aber es gibttolles Tutorialdafür!

verwandte Informationen