2016-04-20 19 views
1

zu erzwingen Ich versuche, einen Unterordner (/ bbb /) meiner Stammdomäne zu zwingen, immer als https zu zeigen. Auch meine .htaccess Datei kümmert sich um die Erweiterungen der Seiten..htaccess - "Zu viele Weiterleitungen" beim Versuch, https

Ich habe die .htaccess Datei in meinem /bbb/ Ordner, aber ich bekomme "zu viele Umleitungen", wenn ich versuche, eine Verbindung zu https zu erzwingen, ohne dass alles einwandfrei funktioniert.

Was ist falsch in meinem Code?

Options +FollowSymLinks -MultiViews 
Options +Indexes 
AcceptPathInfo Off 
RewriteEngine on 
RewriteBase /

ErrorDocument 404 https://example.co.uk/404page/404.html 

#Force from http to https 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} !^bbb.example.co.uk/$ 
RewriteRule ^(.*)$ https://bbb.example.co.uk/$1 [R=301] 

#take off index.html 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{REQUEST_URI} ^(.*/)index\.html$ [NC] 
RewriteRule . http://www.%{HTTP_HOST}%1 [R=301,NE,L] 

## hide .php extension 
# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L,NC] 

## To internally redirect /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_URI}.php [L]  

## hide .html extension 
# To externally redirect /dir/foo.html to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC] 
RewriteRule^%1 [R,L,NC] 

## To internally redirect /dir/foo to /dir/foo.html 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule^%{REQUEST_URI}.html [L] 
+1

HTTP_HOST enthält ** ** nur den Hostnamen. Ihr 'bbb.example.co.uk/' wird niemals übereinstimmen, da '/' kein gültiger Teil des Hostnamens ist. –

Antwort

2

Problem ist in dieser Regel:

#Force from http to https 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} !^bbb.example.co.uk/$ 
RewriteRule ^(.*)$ https://bbb.example.co.uk/$1 [R=301] 

Ändern Sie diese Regel:

#Force from http to https 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} =bbb.example.co.uk 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301] 

Sie haben Bedingung Verwendung von ! bei Start aufgrund umgekehrt und haben einen zusätzlichen Schrägstrich am Ende das wird nie angepasst werden damit Ihre Bedingung immer wieder wahr wird.

Stellen Sie sicher, dass Sie Ihren Browser-Cache löschen, bevor Sie dies testen.

+0

Danke, aber es sagt immer noch "Zu viele Weiterleitungen" .. Ich habe den Cache aktualisiert – SNos

+0

Exact gleiche Regel funktioniert gut auf meinem Apache. Sind Sie hinter Apache und '% {SERVER_PORT}' funktioniert gut dort? – anubhava

+0

Ich bin nicht mit meinem Server, sondern ein Server-Provider one.com – SNos

3

versuchen Sie dies:

RewriteEngine On 
RewriteCond %{ENV:HTTPS} !on 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
Verwandte Themen