HTTP naar HTTPS ongeacht de url balk
Ik heb een server gekoppeld aan een domeinnaam, daarbij heb ik een HTTPS-certificaat. Alleen het probleem is ik heb alleen een certificaat voor de website met www. ervoor.
Hoe kan ik zorgen dat het wordt geredirect naar HTTPS en www. ongeacht wat er ingetypt wordt in de URL-balk.
Op dit moment heb ik:
Code (php)
1
2
3
4
2
3
4
RewriteEngine On
RewriteCond %{SERVER_NAME} =www.domein.nl [or]
RewriteCond %{SERVER_NAME} =domein.nl
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
RewriteCond %{SERVER_NAME} =www.domein.nl [or]
RewriteCond %{SERVER_NAME} =domein.nl
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
In mijn Apache 2 configuratie staan van poort 80.
Maar dit werkt natuurlijk niet wanneer je naar https://domein.nl gaat, er staat geen www. voor.
Blijkbaar werkt het nu zoals ik wil maar ik zou graag Apache 2 configuratie gebruiken óf het aanpassen van de redirects in YourHosting (Default => https://www.domein.nl).
Ik vind dit slordig en ik zou graag één van de twee gebruiken.
Alvast bedankt voor het meedenken!
Gewijzigd op 02/04/2017 10:27:32 door Marthijn Buijs
http://domein.nl naar https://domein.nl gaat. Dit gaat niet werken als ik een certificaat heb voor www.domein.nl
Dan is het probleem dat hij van Gewijzigd op 02/04/2017 11:24:35 door Marthijn Buijs
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
# Alle non-www request doorsturen naar www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Alles rewriten naar https met de huidige www-hostname.
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Alles rewriten naar https met de huidige www-hostname.
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Gewijzigd op 02/04/2017 11:25:27 door - Ariën -
Ik heb nog geen certificaatboer gezien die de beide varianten niet opneemt in een certificaat, dus dat punt gaat niet echt op. Wat gebeurt er als je van de laatste regel van Ivo jouw eigen regel maakt?
https://domein.nl gaat? (zonder www.)
En als iemand naar In mijn geval zal diegene toch doorgestuurd moeten worden. Het is wel natuurlijk zo dat http en https op dezelfde web-root uit moeten komen.
Gewijzigd op 02/04/2017 11:48:27 door Marthijn Buijs
Ikzelf gebruik dit in de .htaccess, waar alles van beide protocollen dus samenkomt.
Edit:
Dit was in Google Chrome met de volgende flag:
Hierdoor kan ik beter zien of mijn server configuratie wel goed staat.
Zonder deze vlag zal Google Chrome zelf gaan redirecten.
Hoe doet PHPHulp het eigenlijk? Deze heeft ook een certificaat van Lets Encrypt.
Gewijzigd op 02/04/2017 17:58:43 door Marthijn Buijs
Ik heb even gekeken naar mijn testdomeinnaam waarop ik Let's Encrypt heb draaien (via DirectAdmin), en die gebruikt voor de www-domeinnaam gewoon het certificaat van de non-www domeinnaam.
Gewijzigd op 02/04/2017 18:25:14 door - Ariën -
Correct, lets encrypt doet het niet anders dan bij andere certificaten: je standaard certificaat wordt uitgegeven met een CN van je domein zonder www, met een extra entry voor met www. Het zou dus hoe dan ook geen problemen mogen opleveren op technisch vlak.
Ik denk dat er gewoon vergeten is om de normale hostname als certificaat aan te maken. Hoe genereer jij je certificaten? Bij DirectAdmin moet ik zowel hostnaam.nl als www.hostnaam.nl opgeven, hoewel ze automatisch beiden aangevinkt zijn.
En voor wie het opvalt: me.uk zijn echt bestaande TLD's ;-)
Gewijzigd op 02/04/2017 20:12:27 door - Ariën -
Ik heb de certificaten aangemaakt m.b.v. certbot, deze heeft het automatisch gedaan. Ik hoefde alleen maar een non-HTTPS VirtualHost te selecteren en de rest ging vanzelf.
Bedankt voor de moeite mensen maar ik denk dat er even niets anders opzit dan het zo te laten..