2017-08-22 2 views
1

Ich versuche, eine URL auf https umgeleitet werden und alle anderen Urls ex auf http: Wenn ich Login-Seite von example.com zugreifen möchten, sollte es zu https://example.com/login umleiten und wenn ich auf andere Seiten als die Anmeldung zugreifen möchte, sollten sie zu umgeleitet werden. Aktuelle .htaccess-Code:Umleiten einer URL https und alle anderen URLs auf http

RewriteEngine on 
RewriteCond %{HTTPS} =on 
RewriteRule !^(login) http://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L] 
DirectoryIndex index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

Dies funktioniert gut. Alle URLs außer Login leiten auf http um. Aber wenn ich den folgenden Code hinzufügen Login-Seite umgeleitet werden, umgeleitet wird

RewriteCond %{HTTPS} !=on 
RewriteRule (login) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L] 

index.php Was ich will nur Login-Seite ist auf https umgeleitet werden soll. Aber das passiert nicht.

Vielen Dank im Voraus.

Antwort

0

Sie können tun, dass die folgende Regel in Ihrer .htaccess Datei:

RewriteEngine On 

RewriteCond %{HTTP:X-Forwarded-SSL} !on 
RewriteCond %{REQUEST_URI} ^\/(login) 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301] 

RewriteCond %{HTTP:X-Forwarded-SSL} =on 
RewriteCond %{REQUEST_URI} !^\/(login) 
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301] 

Der erste Satz von Regeln überprüft HTTPs ist für das Verzeichnis ist ausgeschaltet /login/ wenn er ausgeschaltet ist, dann wird es sie zwingen, HTTPs .

Der zweite Satz von Regeln überprüft, ob HTTPs eingeschaltet ist, wenn es eingeschaltet ist, wird es für alles außer dem Verzeichnis /login/ ausgeschaltet.

Stellen Sie sicher, dass Sie Ihren Cache löschen vor Sie dies testen.

HINWEIS:

Ich bin mir nicht sicher, warum Sie alles HTTPs werden nicht wollen ... Es wäre für eine viel sicherere Website machen und Ihnen erlauben würde, HSTS zu benutzen?.

Verwandte Themen