2016-09-05 8 views
1

ich den Code haben:Mod_rewrite umleiten immer zu 301

# No https a https 
RewriteCond %{HTTPS} !=on [NC] 
RewriteRule !(cecabank)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] 

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

Ich möchte https umleiten, wenn http nicht eingeschaltet ist und die URL ist nicht cecabank.

Dies funktioniert: http://sample.es/sample 301 umleiten zu https://sample.es/sample

Dies funktioniert nicht: http://sample.es/cecabank umleiten 301 bis http://sample.es/index.php

Ich will nicht umleiten mit 301 index.php Wenn ich die HTTPS-Umleitung entfernen funktioniert aber es wird nicht umgeleitet.

Antwort

2

Versuchen Sie, die folgenden

RewriteEngine On 

# No https a https 
RewriteCond %{HTTPS} !=on [NC] 
RewriteCond %{REQUEST_URI} !^/cecabank [NC] 
RewriteRule^https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] 

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L,END] 

Die END Flag (verfügbar seit Apache 2.4+) wird der Zwangsumleitung kümmern.

+0

** ENDE ** funktioniert es, aber warum ?. 'RewriteRule^index.php [L, END]' ist die letzte Regel in der .htaccess-Datei. –

+1

@ PedroGámez Da mit 'L' Flag die Regeln noch einmal ausgeführt werden, und da' index.php' keine Ausnahme von der 'RewriteRule' Klausel ist, erfolgt die Umleitung. – hjpotter92