Error ERR_TOO_MANY_REDIRECTS bij redirect HTTP naar HTTPS

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 18:11
Mijn vraag

Ik krijg de error ERR_TOO_MANY_REDIRECTS als ik het volgende toevoeg in .htaccess:
code:
1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

De melding krijg ik zowel op Chrome als Edge.

Ik krijg deze error bij een WordPress 5.7 installatie door gebruik te maken van de laatste WordPress Docker image op een lokale server.
Maar ook op een WordPress 5.7 installatie via Installatron bij hosting provider Vimexx.
Dus ergens doe ik iets verkeerd. Maar wat? Want dit "truukje" staat zo vaak genoemd op internet...

De redirect lijkt te werken want http://www.xxxxxxxx.com gaat na het aanpassen van de .htaccess file naar https://www.xxxxxxxx.com. Aleen https://www.xxxxxxxx.com geeft nu de error. Ook bij het direct benaderen van https://www.xxxxxxxx.com.

In WordPress staat https://www.xxxxxxxx.com als URL ingesteld.

De totale .htaccess file ziet er als volgt uit: (het bovenste stuk is standaard WordPress)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Relevante software en hardware die ik gebruik

Apache 2.x.
WordPress 5.7.

Wat ik al gevonden of geprobeerd heb

Browser history verwijderd.
WordPress cache verwijderd.

Apache log staat niets anders in dan:
code:
1
172.21.0.1 - - [15/Mar/2021:12:30:53 +0000] "GET / HTTP/1.1" 301 564 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.50"

Dat is waarschijnlijk ook omdat de redirect zelf gewoon goed gaat.

👉🏻 Blog 👈🏻

Beste antwoord (via technorabilia op 16-03-2021 20:57)


  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 23:35
Ik heb het nog even gecheckt, maar Vimexx maakt zo te zien gebruik van een reverse proxy op de webserver. De 'echte' server luistert op localhost:80:

phpinfo:
code:
1
2
3
4
5
6
7
$_SERVER['SERVER_ADDR'] 127.0.0.1
$_SERVER['SERVER_PORT'] 80
$_SERVER['REQUEST_SCHEME']  http
$_SERVER['HTTP_X_ZXCS_URI'] /info.php
$_SERVER['HTTP_X_ZXCS_VHOST']   www.domein.com
$_SERVER['HTTP_X_FORWARDED_PORT']   443
$_SERVER['HTTP_X_FORWARDED_PROTO']  https


In de handleiding staat er een aangepaste versie van .htaccess voor ssl-redirect:
code:
1
2
3
4
5
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
SetEnvIf X-Forwarded-Proto "https" HTTPS=on
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans

Alle reacties


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 15:53

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • Nielsvr
  • Registratie: Maart 2004
  • Laatst online: 08-04 11:51
Staat ook in de database de correcte url? Dus in de _options table. Normaliter moet je bij een migratie van http naar https alle url's in de database laten vervangen in WordPress (met bijvoorbeeld WP-CLI, DB Replace of WP Migrate DB Pro).

Let ook op eventuele een harde configuratie van je URL in wp-config.php

Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 18:11
@Nielsvr
Goed punt, echter...

Ik heb voor alle zekerheid WordPress nog eens opnieuw schoon geïnstalleerd. En hierna direct vanaf https://www.xxxxxxxx.com geinstalleerd. Er is een geldig certifcaat van Let's Encrypt aanwezig.

De WordPress Address (URL) en Site Address (URL) staan dan beide direct op https://www.xxxxxxxx.com. Daarna pas ik niets aan en werkt de site op http en https.

Zodra ik in .htaccess het volgende onderaan toevoeg, krijg ik weer de error ERR_TOO_MANY_REDIRECTS:
code:
1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Voor alle zekerheid heb ik de database gedumpt met mysqldump en hierin gezocht op http referenties. Ik zie dan geen referenties die naar http://www.xxxxxxxx.com verwijzen.
root@DS716V:~# grep -Eo 'http://[^/"]+' backup.sql | sort | uniq
http://blog.akismet.com
http://gutenberg.run
http://learn.wordpress.org\
http://mediatemple.net
http://php.net
http://planet.wordpress.org
http://pluginrank.com\
http://purl.org
http://rpc.pingomatic.com
http://secure.hostican.com
http://s.w.org
http://wordpress.org
http://www.anhosting.com
http://www.bluehost.com
http://www.dreamhost.com
http://www.instagram.com
http://www.w3.org
root@DS716V:~#

[ Voor 17% gewijzigd door technorabilia op 15-03-2021 15:25 ]

👉🏻 Blog 👈🏻


Acties:
  • +1 Henk 'm!

  • Nielsvr
  • Registratie: Maart 2004
  • Laatst online: 08-04 11:51
Kan je dit eens proberen? Misschien andere server variabele;

code:
1
RewriteCond %{HTTPS} off


Aanpassen in

code:
1
RewriteCond %{HTTPS} !=on

Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 20:07

Hero of Time

Moderator LNX

There is only one Legend

Als ik zoek op je 'rewritecond' regel, kom ik als eerste hit uit op https://www.hostinger.com/tutorials/ssl/forcing-https waar een grote rode waarschuwing staat met de volgende tekst:
IMPORTANT: Make sure that the line RewriteEngine On is not repeated twice. In case the line already exists, simply copy the rest of the code without it.
In je .htaccess van WP staat al een 'RewriteEngine On' regel. Dat zal dus je probleem mogelijk zijn.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 18:11
@Nielsvr
Lijkt hetzelfde te doen.

Als ik de redirect uit de .htaccess file haal dan vindt de redirect van http naar https ook niet meer plaats (logisch). De site werkt dan op zowel http als https.

Als ik de redirect erin zet dan lijkt deze ook te werken. Er vindt dan ook daadwerkelijk een redirect plaats van http naar https. Dan ga ik ervan uit dat de RewriteCond %{HTTPS} off etc. zijn werk doet.

Het probleem is echter dat https://www.xxxxxxxx.com dan in een loop lijkt te zitten. Ook als ik dus https://www.xxxxxxxx.com direct benader dan krijg ik de ERR_TOO_MANY_REDIRECT error.

Daarom kon ik mij iets voorstellen bij je eerdere opmerking dat er nog een http verwijzing naar mijn site ergens stond en ik zodoende in een http --> https --> http loop terecht kwam. Als ik echter de backup dump bekijk dan zijn er geen http verwijzingen meer naar mijn site te vinden (zie eerdere post). Dit zijn alleen http verwijzingen naar andere sites.

Ik snap niet dat ik dit nu op twee installaties op totaal verschillende systemen heb. Blijkbaar doe ik iets structureels anders (=verkeerd) dan andere gebruikers. :?

@Hero of Time
Lijkt geen effect te hebben. Maar ik zal deze regel eruit halen. (y)

Edit:
Tussen elke aanpassing gooi ik mijn brower data weg dus daar kan het niet aan liggen.

[ Voor 3% gewijzigd door technorabilia op 15-03-2021 15:53 ]

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 18:11
Ten einde raad heb ik maar de Really Simple SSL plugin geinstalleerd.

Hier zit een optie "Enable 301 .htaccess redirect" in. Als ik deze kies dan wordt het volgende toegevoegd bovenin de .htaccess file:
code:
1
2
3
4
5
6
7
# BEGIN rlrssslReallySimpleSSL rsssl_version[4.0.11]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# END rlrssslReallySimpleSSL

En hoera nu werkt het goed. Alle http verwijzingen worden doorgestuurd naar https. Zowel vanuit de / als alle andere http links.

Waarom de eerste poging (zie eerste post) niet werkt weet ik niet. Zeker niet omdat dit "overal" op internet te vinden is ook in combinatie met WordPress. :?

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 23:35
kraades schreef op maandag 15 maart 2021 @ 16:33:
Waarom de eerste poging (zie eerste post) niet werkt weet ik niet. Zeker niet omdat dit "overal" op internet te vinden is ook in combinatie met WordPress. :?
Vermoedelijk gebruik je de reverse proxy uit de vorige thread. Deze verzorgt de ssl termination, de requests naar de webserver zullen nooit scheme https meekrijgen. Vandaar de infinite loop. Met de nieuwe oplossing kijk je naar de forwarderd header die door de reverse proxy wordt toegevoegd, vandaar dat het nu wel werkt.

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Acties:
  • +1 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 18:11
@nescafe
Klinkt logisch echter... ;)

Ik dacht eerst ook dat het te maken had met de setup van reverse proxies. Daarom heb ik het CNAME-record verwijderd en de A-records hersteld en direct bij Vimexx de installatie uitgevoerd. Dus eigenlijk een recht-toe-recht-aan schone installatie zonder docker, zonder reverse proxies. Direct op een https URL dus geen http links historie. Standaard template en geen instellingen gewijzigd. Alles standaard.

En je voelt 'm al aankomen...hetzelfde probleem. En identiek gedrag.

Apart vind je niet? Apart dat schijnbaar ik de enige ben die het probleem heeft terwijl heel internet de in de topic start genoemde oplossing gebruikt.

Ik kan er geen chocolade van maken... :?

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 20:07

Hero of Time

Moderator LNX

There is only one Legend

Chrome in gebruik? Die cachet redirects als een krankzinnige idioot en je komt er heel lastig vanaf. Dus hoewel je telkens je browser cache e.d. leegt, wordt de redirect status elders bewaard. Dat maakt het voor dit soort zaken gruwelijk irritant, want je snapt niet wat je verkeerd doet.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 18:11
@Hero of Time
Ah, dat wist ik niet. Ik lees het nu inderdaad ook.

Ik gebruik Chrome, Edge (Chromium) en Safari om e.e.a. te testen.

Ik heb het nu goed werkend overigens. Zie boven.

👉🏻 Blog 👈🏻


Acties:
  • Beste antwoord
  • +2 Henk 'm!

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 23:35
Ik heb het nog even gecheckt, maar Vimexx maakt zo te zien gebruik van een reverse proxy op de webserver. De 'echte' server luistert op localhost:80:

phpinfo:
code:
1
2
3
4
5
6
7
$_SERVER['SERVER_ADDR'] 127.0.0.1
$_SERVER['SERVER_PORT'] 80
$_SERVER['REQUEST_SCHEME']  http
$_SERVER['HTTP_X_ZXCS_URI'] /info.php
$_SERVER['HTTP_X_ZXCS_VHOST']   www.domein.com
$_SERVER['HTTP_X_FORWARDED_PORT']   443
$_SERVER['HTTP_X_FORWARDED_PROTO']  https


In de handleiding staat er een aangepaste versie van .htaccess voor ssl-redirect:
code:
1
2
3
4
5
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
SetEnvIf X-Forwarded-Proto "https" HTTPS=on
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans

Pagina: 1