http zu https Apache-Umleitung


156

Umwelt Centos mit Apache

Es wird versucht, die automatische Umleitung von http nach https einzurichten

From manage.mydomain.com --- To ---> https://manage.mydomain.com 

Ich habe versucht, Folgendes zu meiner httpd.conf hinzuzufügen, aber es hat nicht funktioniert

 RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

Irgendwelche Ideen?

Antworten:


209

Ich bin diesem Beispiel tatsächlich gefolgt und es hat bei mir funktioniert :)

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   Redirect permanent / https://mysite.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName mysite.example.com
  DocumentRoot /usr/local/apache2/htdocs
  SSLEngine On
 # etc...
</VirtualHost>

Dann mach:

/etc/init.d/httpd restart


7
Beachten Sie, dass dies nur verfügbar ist, wenn Sie Zugriff auf die VirtualHost-Datei haben. Dies ist die empfohlene Methode.
Foochow

4
Nachdem Sie dies auf httpd.conf geändert haben, starten Sie den Apache-Webserver neu. damit es auch Ihren Browser-Cache widerspiegelt und löscht.
Suriyan Suresh

2
Ich möchte berichten, dass diese Methode mit Ubuntu 12.4 bei mir nicht funktioniert hat, aber die vorgeschlagene Antwort von RewriteEngine hat es geschafft.
Deano

2
Müssen Sie einen Neustart durchführen? Ein Neuladen ist viel weniger destruktiv und bringt die neue Konfigurationsdatei. /etc/init.d/httpd reload|| service httpd reload
Rebecca Dessonville

3
Da der Zweck darin bestand, es in den SSL-Modus umzuleiten, wird die Leitung DocumentRoot /usr/local/apache2/htdocsnicht mehr benötigt
Abel Callejo

129
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

http://www.sslshopper.com/apache-redirect-http-to-https.html

oder

http://www.cyberciti.biz/tips/howto-apache-force-https-secure-connections.html


3
Dies ist eine bessere Lösung als die genehmigte, da sie auch dann funktioniert, wenn Sie sich hinter einem SSL-Offloader wie Pound oder BigIP befinden. Diese Offloader leiten häufig den gesamten Datenverkehr an denselben Port weiter, und die genehmigte Lösung funktioniert in diesem speziellen Fall nicht
spiritoo

1
@spiritoo Nicht so. Die Apache-Dokumente sagen ausdrücklich, dass dies eine der Situationen ist, in denen Sie nicht mod_rewrite verwenden sollten, sondern Redirect verwenden sollten: httpd.apache.org/docs/2.4/rewrite/avoid.html
Luke Madhanga

4
@LukeMadhanga Apache-Dokumente empfehlen die Verwendung von Redirect für die Leistung. Trotzdem ist die RewriteEngine-Lösung im Sinne einer allgemeineren Lösung besser, da sie auch in dem von mir beschriebenen Fall (Offloading) funktioniert. Das Ziel meines Kommentars ist es, jedem Benutzer den Schlüssel zur Auswahl zwischen den beiden Antworten zu geben. Einige Leute wollen generische Verfahren (großes Korps), andere wollen Leistung ... es ist eine freie Wahl.
Spiritoo

19
Dies ist jedoch großartig, wenn Sie es vergrößern möchten, fügen Sie dieses [R = 302, L, QSA] hinzu, damit alle Parameter auch an die sichere Seite übergeben werden. Es sollte so aussehen:% {REQUEST_URI} [R = 302, L, QSA]
Svetoslav Marinov

Ich habe diese Zeilen verwendet und beim Versuch, eine Seite zu laden, lautet die Antwort "Ressource konnte nicht geladen werden: net :: ERR_CONNECTION_REFUSED". Was mache ich falsch?
Serkan

98

Hier gesucht apache redirect http to httpsund gelandet. Das habe ich auf Ubuntu gemacht:

1) Module aktivieren

sudo a2enmod rewrite
sudo a2enmod ssl

2) Bearbeiten Sie Ihre Site-Konfiguration

Datei bearbeiten

/etc/apache2/sites-available/000-default.conf

Inhalt sollte sein:

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

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    <path to your crt file>
    SSLCertificateKeyFile   <path to your private key file>

    # Rest of your site config
    # ...
</VirtualHost>
  • Beachten Sie, dass für das SSL-Modul ein Zertifikat erforderlich ist. Sie müssen ein vorhandenes angeben (falls Sie eines gekauft haben) oder selbst ein selbstsigniertes Zertifikat erstellen.

3) Starten Sie apache2 neu

sudo service apache2 restart

Arbeiten Sie mit Ubuntu 16.04 & Apache2. Vielen Dank!
Sylvester Yao

11

Eigentlich gehört Ihr Thema zu https://serverfault.com/, aber Sie können trotzdem versuchen, diese .htaccess- Anweisungen zu überprüfen :

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1

11

Die Verwendung von mod_rewrite wird nicht empfohlen. Verwenden Sie stattdessen den virtuellen Host und die Umleitung.

Falls Sie dazu neigen, mod_rewrite zu verwenden:

RewriteEngine On
# This will enable the Rewrite capabilities

RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same 
location but using HTTPS.
# i.e.  http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in
# httpd.conf or .htaccess context

Referenz: Httpd Wiki - RewriteHTTPToHTTPS

Wenn Sie nach einer permanenten 301-Umleitung suchen, sollte das Umleitungsflag wie folgt lauten:

 R=301

so wird die RewriteRule sein wie:

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]

6

Wenn Sie Apache2.4 haben, überprüfen Sie 000-default.conf- entfernen DocumentRootund hinzufügen

Redirect permanent / https://[your-domain]/

5

Serverversion: Apache / 2.4.29 (Ubuntu)

Nach langer Suche im Internet und in der offiziellen Dokumentation von Apache kam die einzige Lösung, die für mich funktionierte, von /usr/share/doc/apache2/README.Debian.gz

To enable SSL, type (as user root):

    a2ensite default-ssl
    a2enmod ssl

Fügen Sie in der Datei /etc/apache2/sites-available/000-default.conf das hinzu

Weiterleiten von "/" " https://sub.domain.com/ "

<VirtualHost *:80>

    #ServerName www.example.com
    DocumentRoot /var/www/owncloud
    Redirect "/" "https://sub.domain.com/"

Das ist es.


PS: Wenn Sie das Handbuch lesen möchten, ohne es zu extrahieren:

gunzip -cd /usr/share/doc/apache2/README.Debian.gz

3

Das hat bei mir funktioniert:

RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]

3

Dieser Code funktioniert für mich.

# ----------port 80----------
RewriteEngine on
# redirect http non-www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# redirect http www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# ----------port 443----------
RewriteEngine on
# redirect https non-www to https www
RewriteCond %{SERVER_NAME} !^www\.(.*)$ [NC]
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]


2

Bitte versuchen Sie dies in der Apache Virtualhosting-Konfiguration und laden Sie dann den Apache-Dienst neu

RewriteEngine On

RewriteCond %{HTTPS} off


RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

-1

Ich brauchte dies für etwas so Einfaches wie das Umleiten des gesamten httpDatenverkehrs von der Standard-Apache-Homepage auf meinem Server auf eine übergelieferte https.

Da ich bei der Konfiguration von Apache immer noch ziemlich grün bin, vermeide ich die mod_rewritedirekte Verwendung und habe mich stattdessen für etwas Einfacheres wie das Folgende entschieden:

<VirtualHost *:80>
  <Location "/">
     Redirect permanent "https://%{HTTP_HOST}%{REQUEST_URI}"
  </Location>
</VirtualHost>

<VirtualHost *:443>
  DocumentRoot "/var/www/html"
  SSLEngine on
  ...
</VirtualHost>

Ich mag das, weil ich damit Apache-Variablen verwenden konnte und auf diese Weise nicht den tatsächlichen Hostnamen angeben musste, da es sich nur um eine IP-Adresse ohne zugeordneten Domänennamen handelt.

Referenzen: https://stackoverflow.com/a/40291044/2089675

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.