Richtige Apache-Umleitung von http nach https


3

Ich habe einen neuen virtuellen Host für eine neue Site auf meinem Server eingerichtet, aber das Verhalten ist seltsam, obwohl die Einstellungen exakt mit denen meiner ursprünglichen Site übereinstimmen.

Ich möchte, dass alle Anfragen einfach an HTTPS weitergeleitet werden. Auf meiner Haupt-Site (der funktionierenden) habe ich dies in der VirtualHostKonfiguration angegeben und in habe .htaccessich eine zusätzliche Regel angegeben, um kurze URLs zuzulassen. Insbesondere besteht das Problem auf der nicht funktionierenden Site darin, dass beim Versuch, zu zu wechseln example.com/url, die Umleitung zu https://example.comurlder erforderlichen /URL wechselt und diese entfernt .

Ich habe die exakte Konfiguration von der Arbeitsseite in die neue VirtualHostund .htaccessDatei kopiert, daher bin ich mir nicht sicher, warum sie auf der neuen nicht funktioniert. Meine DNS-Einträge für beide Sites verwenden alle A-Einträge, um darauf zu verweisen. Auf DNS-Ebene finden keine Weiterleitungen oder andere Aktionen statt. Ich habe versucht, ein /am Ende der RedirectZeilen in den Code unten zu setzen, aber das Problem wurde nicht behoben. Der Server ist Ubuntu 14.04 und Apache ist Version 2.4.7. Bei beiden Sites handelt es sich um separate Domänennamen, für die separate .confDateien verwendet werden. Sie werden jedoch auf demselben Server mit derselben IP-Adresse gehostet. Wie kann ich dieses Problem beheben?

Der entsprechende Code in der 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, ist dies die SSL-Konfiguration in meiner VirtualHost-Datei, obwohl sie außerhalb aller anderen Anweisungen ganz am Anfang der Datei 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 die VirtualHostfür die Site:

<VirtualHost *:443>
    ServerName example.com
    ServerAdmin user@example.com
    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>

1
Hast du SSL definiert?
td512

1
Vielleicht verschiedene Apache-Versionen? Und haben Sie versucht, den Schrägstrich am Ende der Redirect-Zeile einzufügen? So was? Redirect permanent / https://example.com/
Marki555,

Wenn SSL definiert ist, habe ich die entsprechenden Codebausteine ​​zum OP hinzugefügt. Ich habe auch versucht, ein /am Ende des RedirectBefehls zu setzen, aber das hat das Problem nicht behoben.
15.

Antworten:


4

So leiten Sie zu HTTPS um:

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>

HINWEIS: Sie müssen ein SSL-Zertifikat erstellen ... aber es gibt ein großartiges Tutorial dafür!


Huh, das scheint das Problem gelöst zu haben. Ich hatte bereits den virtuellen SSL-Host angegeben (ich vermute, Sie haben diese Antwort geschrieben, während ich meinen bearbeitete, um sie hinzuzufügen), aber ich habe Redirectstattdessen meine Zeilen in Ihren ersten Codeblock geändert und alles funktioniert jetzt ordnungsgemäß. Ich danke dir sehr!
15.

gerne helfen :)
Ricain

Können Sie diesen Link überprüfen: askubuntu.com/questions/876767/…
Nullpointer

wohin geht das rewrite engine zeug in der vhosts datei?
Andrew
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.