HTTP auf HTTPS umleiten

Eine verschlüsselte Seite mit SSL-Zertifikat macht nur dann Sinn, wenn die Besucher ihre Webseite über HTTPS aufrufen. Wenn die Seite über HTTP aufgerufen wird, wollen wir eine automatische Weiterleitung auf HTTPS. Das erreichen wir mit folgendem Codeschnipsel, die in die .htaccess gelegt wird, in ihrem Webprojekts.

 RewriteEngine On
 RewriteCond %{SERVER_PORT} !^443$
 RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L] 

Rufen wir jetzt die Seite mit www. (http://www.deinedomain.de) auf, dann wird automatisch zu https://www.deinedomain.de weitergeleitet. Passiert das ohne www. (http://deinedomain.de), wird sie auf https://deinedomain.de weitergeleitet.

Allerdings kann es hierbei zu einem Problem bei der Indexierung der Webseite durch Suchmaschinenbots (Google & Co.) kommen, da Webseiten sowohl mit www. als auch ohne www. aufrufbar sind. Diese können von der Suchmaschine als Duplicate Content und Spamversuch gewertet werden. Das Problem kann man mit folgenden Codeschnipsel umgehen:

RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^(.*)$ https://www.deinedomain.de/$1 [R=301,L] 

Jetzt ist es egal, ob deine Besucher http://www.deinedomain.de eingeben oder http://deinedomain.de, denn er landet am Ende immer bei https://www.deinedomain.de. Dabei spielt das www keine Rolle mehr.

Das wäre bisher nur für einen Apache Webserver. Damit es auch bei einen Nginx Server klappt, muss der Code wie folgt in den Nginx Optionen aussehen:

if ($scheme=='http') {
  return 301 https://$server_name$request_uri;
}