#Ensure mod_rewrite.so module is loaded
LoadModule rewrite_module modules/mod_rewrite.so

<VirtualHost *:80>
ServerName www.domain.com
RewriteEngine On

RewriteCond %{HTTPS} !=on
#RewriteCond %{HTTPS} off

#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

</VirtualHost>
  • De directive RewriteEngine On schakelt de rewrite-mogelijkheden in.
  • De directive RewriteCond %{HTTPS} !=on controleert of de verbinding niet al via HTTPS loopt.

Zorg dat je de VirtualHost voor poort 443 met dezelfde ServerName al hebt ingericht (/etc/httpd/conf.d/ssl.conf):

LoadModule ssl_module modules/mod_ssl.so
Listen 443

<VirtualHost *:443>
ServerName www.domain.com
SSLEngine on
SSLCertificateFile /path/to/www.example.com.cert
SSLCertificateKeyFile /path/to/www.example.com.key
<Location/>
SSLRequireSSL
</Location>
</VirtualHost>

SSL afdwingen voor één onderdeel

Je kunt HTTPS ook voor een specifiek onderdeel van de site afdwingen in plaats van voor de hele site.
De onderstaande regel stuurt iedereen die een deel van /secure/ bezoekt door naar dezelfde locatie, maar dan via HTTPS.

Bijvoorbeeld http://www.example.com/secure/ naar https://www.example.com/secure/

RewriteRule ^/?secure/(.*) https://%{SERVER_NAME}/secure/$1 [R,L]

De Redirect-directive gebruiken

Je kunt ook de Redirect-directive gebruiken om naar SSL door te sturen.

NameVirtualHost *:80
<VirtualHost *:80>
ServerName mysite.example.com
Redirect permanent /secure https://mysite.example.com/secure
</VirtualHost>

Let op: redirect kun je ook in .htaccess-bestanden gebruiken