2016-08-05 39 views
1

Mein htaccess entfernt derzeit die php-Dateierweiterung und nachfolgende Schrägstriche von URLs. Das ist großartig.Das Aktualisieren von htaccess, um https zu erzwingen und das Entfernen von .php verursacht eine Umleitungsschleife.

Allerdings habe ich gerade ein SSL-Zertifikat gekauft und folgte these instructions, um URLs zu zwingen, mein neu erworbenes SSL-Zertifikat zu zeigen (die Website behandelt persönliche und finanzielle Informationen, also ist es ein großer Verkaufsargument).

Unten ist meine .htaccess Datei, mit dem https: // in den # NEW CODE Block umgeschrieben. Wenn ich jedoch versuche, die Website zu laden, erhalte ich eine Antwort in Chrome mit der Nummer ERR_TOO_MANY_REDIRECTS.

RewriteEngine On 

# NEW CODE 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R,L] 
# END NEW CODE 

# Unless directory, remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ https://example.com/$1 [R,L] 

# Redirect external .php requests to extensionless url 
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(.+)\.php$ https://example.com/$1 [R=301,L] 

# Resolve .php file for extensionless php urls 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

.htaccess Dateien sind nicht meine Forté, also jede mögliche Hilfe würde geschätzt werden!

+0

Und alles funktioniert ohne den neuen Code, keine Umleitung Schleifen? –

+2

Befindet sich ein Load Balancer vor diesem Webserver? –

+0

@DusanBajic Mir ist kein Load Balancer auf dem Server bekannt, und alles funktionierte gut mit dem Original (dh ohne den Abschnitt NEUES CODE und die http URLs statt HTTPS) – tristanojbacon

Antwort

0

Ändern Versuchen:

# NEW CODE 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R,L] 
# END NEW CODE 

zu:

# NEW CODE 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule ^(.*)$ https://example.com/$1 [R,L] 
# END NEW CODE