Goedenavond collegae,

Ik heb een .htaccess met de volgende rules:


#forceer https:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.mijnwebsite.nl/$1 [R,L]

##Catch url structure for normal pages
# check that the request url is neither a file nor a directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/?$ /index.php?page=$1&var1=$2&var2=$3&var3=$4&var4=$5 [NC,L]

# check that the request url is neither a file nor a directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*)/(.*)/?$ /index.php?page=$1&var1=$2&var2=$3&var3=$4 [NC,L]

# check that the request url is neither a file nor a directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*)/?$ /index.php?page=$1&var1=$2&var2=$3 [NC,L]

# check that the request url is neither a file nor a directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/?$ /index.php?page=$1&var1=$2 [NC,L]

# check that the request url is neither a file nor a directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ /index.php?page=$1 [NC,L]


Zoals je ziet is er eerst een redirect om https te forceren, en vervolgens een aantal redirects op SEO-vriendelijke urls om te zetten voor afhandeling in mijn php-scripts.

Probleem ontstaat wanneer er een http:// request wordt gedaan, want dan krijg ik een probleem: "too many redirects".
Dat begrijp ik, want eerst een redirect om er https van te maken, en vervolgens nóg een redirect om de url verder te verwerken. Nu zoek ik al een tijdje naar een oplossing voor dit probleem maar kan het niet vinden.
Ik vermoed dat ik rules zal moeten combineren, maar hoe..?

Kan iemand mij helpen?

Paul
Het introduceren van de querystring-parameter pageString is overigens niet nodig want index.php kan prima $_SERVER['REQUEST_URI'] uitlezen.
Heren,

De oplossing is gevonden. Mijn hostingprovider (PCextreme) geeft aan dat de volgende rules werken:

RewriteCond %{HTTP:X-Forwarded-Proto} !http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


En waarempel.. het werkt.

Ik ben wel verbaasd dat er zoveel verschil blijkt te zijn op de code die gebruikt kan worden, aangezien het toch vrijwel altijd een Unix server is.. Maar goed, ik ben absoluut geen kenner van webservers. Bedankt allemaal voor de feedback en het meedenken!

Groet, Paul
Zo te zien heb je een frontend voor de server zitten, mogelijk een loadbalancer. Dan werken dit soort regels inderdaad.
kijkend in mijn servers $_SERVER-vars:

in geval van https bestaat er $_SERVER['HTTPS'] met de value ON
in geval van http bestaat deze niet.

Verder bestaat er een $_SERVER['REQUEST_SCHEME'] die http of https bevat.

Maar het is waarschijnlijk afhankelijk van de manier van compileren van Apache (of andere webserver)

Ik heb een probleem met de redirect van http naar https voor alle (sub)pagina's. In het .htaccess bestand in de root van de wordpress folder staat het volgende:

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

Dit leidt echter tot een doorverwijzing naar https://mijnwebsite.nl/mijnwebsite.nl. Enig idee hoe dit op te lossen is?
@Paul Biegel

Graag de volgende keer zelf een nieuw topic aanmaken en niet andermans topic 'kapen'.
Bedankt voor de snelle reactie Ivo P. In het vervolg zal ik idd een nieuw topic aanmaken. excuus.

Reageren