2016-08-25 9 views
0

Ich habe eine Seite mit https auf Apache 2.4.7Probleme Umleitung von HTTP auf HTTPS

Ich möchte: http://example.com weiterleiten zu https://example.com

Hinweis gibt KEIN Slash für diese URL ist!

und

http://example.com/whatever-https://example.com/whatever/

Hinweis weiterleiten ein Schrägstrich für diese URL IS!

Zur Zeit habe ich folgendes:

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

<VirtualHost *:443> 
    ServerName example.com 
    ServerAlias *.example.com 

    ServerAdmin [email protected] 
    DocumentRoot /var/www/example.com/ 

    SSLEngine on 
    SSLCertificateKeyFile /etc/ssl/ssl.key/example.com.key 
    SSLCertificateFile /etc/ssl/ssl.crt/example.com.crt 
    SSLCertificateChainFile /etc/ssl/ssl.crt/example.com.ca-bundle 

    <Directory /var/www/example.com/> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 

    ErrorLog ${APACHE_LOG_DIR}/example-error.log 
    CustomLog ${APACHE_LOG_DIR}/example-access.log combined 

</VirtualHost> 

Die oben vorwärts http://example.com-https://example.com richtig.

Leider ist die oben auch nach vorn:

http://example.com/foo/bar zu https://example.comfoo/bar im Gegensatz zu https://example.com/foo/bar/

+1

Sie sagen, Sie 'http umleiten möchten: // example.com/whatever' auf' https: // example.com/was auch immer/'und später sagen Sie' http: //example.com/foo/bar 'sollte auf' https: // example.com/foo/bar' umgeleitet werden. Möchten Sie einen Schrägstrich hinzufügen, wenn dieser in der ursprünglichen Anfrage nicht vorhanden war oder nicht? –

+0

Guter Fang. Fest! –

Antwort

1

Versuchen Sie Folgendes:

Redirect/https://example.com 
RedirectMatch ^(/.+)$ https://example.com$1/ 

Die aktuelle Redirect nur die Homepage passen würde, glaube ich, so nicht sicher, warum Sie überhaupt für/foo/bar umgeleitet wurden

Auch, wenn dies q rage ist wirklich über Apache 2.4, Ihre Syntax Require all granted statt Wie sein lassen sollten Sie ersetzen sollten:

Order allow,deny 
Allow from all 

https://httpd.apache.org/docs/2.4/upgrading.html für weitere Informationen anzeigen.

+0

Was sollte ich ersetzen mit "Erfordern alle gewährt" und warum? –

+0

Das hat gut funktioniert, aber das leitet 'http: // example.com/was auch immer' nach 'https: // example.com/was auch immer', NICHT' https: // example.com/was auch immer <(dh mit dem nachgestellten Schrägstrich: Ich möchte nur den Schrägstrich für die Homepage nicht haben –

+0

@Yahya Uddin Ich habe meine Antwort aktualisiert :) – jedifans

0

Verwenden Sie die Engine neu schreiben. Ich habe dieses Fragment bekam:

RewriteEngine on 
RewriteCond %{HTTPS} !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 
+0

Dies leitet 'http: // example.com' nach' https: // example.com/'NOT 'https: // example.com' (dh ohne den abschließenden Schrägstrich). Ich denke auch, dass das Überprüfen der HTTPS-Bedingung nicht erforderlich ist oder andernfalls über Port 443 verbunden worden wäre. –

Verwandte Themen