Weiterleitung von HTTP auf HTTPS mit www per htaccess-Datei einrichten

Kachel oliv mit Schriftzug .htaccess

.htaccess-Datei – eine praxiserprobte Universallösung

In diesem Artikel stellen wir Ihnen eine Universallösung für eine .htaccess-Datei vor. Mit Hilfe dieser Datei können Sie auf jeder beliebigen Website die permanente Weiterleitung von HTTP nach HTTPS mit Prefix www einrichten.

Wozu ist eine Weiterleitung von HTTP auf HTTPS notwendig?

Wie schon in unserem vorherigen Beitrag zur Umstellung unseres eigenen Blogs auf HTTPS berichtet, ist es zunehmend wichtig, nicht nur Online-Shops sondern „ganz normale“ Websites mit einem SSL-Zertifikat zu versehen um einen verschlüsselten Datentransfer des Besuchers mit der Website zu ermöglichen.

HTTPS-gesicherte VerbindungDas Zertifikat alleine genügt jedoch bei vielen Webhosting-Anbietern noch nicht. Denn Ihr Besucher kann die Website nach wie vor nicht nur über HTTPS sondern auch weiterhin über HTTP aufrufen. Und da viele Internet-Surfer heutzutage Ihre Lieblings-Webseiten in den Browser-Favoriten/-Lesezeichen speichern, ist dort natürlich weiterhin die HTTP-Variante gespeichert. Sendet Ihnen Ihr Website-Besucher nun per Kontaktformular eine Anfrage, werden die sensiblen Daten des Besuchers unverschlüsselt über das Internet übertragen, und können abgefangen werden.

Hinzu kommt noch das Problem von Duplicate Content.

Was ist Duplicate Content?

Duplicate Content (doppelte Inhalte) entsteht, sobald identische oder sehr ähnliche Texte oder Textteile, Bilder und weitere Inhalte über unterschiedliche URLs zu erreichen sind. Oder anders formuliert: der gleiche oder ein sehr ähnlicher Inhalt ist auf verschiedenen Seiten der gleichen oder einer anderen Website zu finden.

Beispiele für Duplicate Content sind:

  • Eine Website ist sowohl mit www als auch ohne www erreichbar
  • Eine Website ist sowohl mit http als auch via https erreichbar
  • Der Inhalt ist in verschiedenen (digitalen) Versionen online zu finden (z.B. HTML und PDF)
  • Umfangreiche Inhalte werden in der Seitenleiste (Sidebar) und/oder im Fußbereich (Footer) verwendet, und diese Inhalte wiederholen sich auf jeder Inhaltsseite der Webseite
  • Der Inhalt wurde (unerlaubt) kopiert

Suchmaschinen wie Google & Co. und ihre Algorithmen bemühen sich, dem Nutzer die besten und möglichst nur relevante Suchergebnisse zu liefern. Doppelte Inhalte erschweren den Suchmaschinen jedoch die Arbeit, zwischen verschiedenen Versionen eine Entscheidung für das beste Ergebnis zu treffen. Jeder Webseitenbetreiber sollte es sich daher zum Ziel setzen, einzigartige Inhalte zu publizieren, und dadurch die Gefahr doppelter Inhalte zu minimieren.

Nur am Rande bemerkt: ob sich Duplicate Content negativ auf das Ranking der Website bei den Suchmaschinen auswirkt wird nach wie vor kontrovers diskutiert. Bei den großen SEO-Agenturen gibt es dazu jedenfalls keine einheitlichen Aussagen. Wenn Sie auf Nummer Sicher gehen möchten, vermeiden Sie doppelte Inhalte.

Wie erreiche ich die Weiterleitung von HTTP auf HTTPS (mit und ohne www)?

Ob Sie sich um die Weiterleitung von HTTP auf HTTPS und ggf. auch die Weiterleitung auf mit oder ohne www selbst kümmern müssen hängt in der Regel von zwei Faktoren ab:

  1. Dem Webhosting-Anbieter bzw. der von ihm verwendeten Webhosting-Plattform (z.B. cPanel, Plesk), und
  2. Dem verwendeten CMS-System

Manche Webhosting-Provider stellen automatisch sicher, dass bei der Aktivierung des SSL-Zertifikats für eine Domain sämtliche Aufrufe der Website über HTTPS erfolgen. Bei anderen Providern müssen Sie sich selbst darum kümmern, und dies geschieht dann in der Regel über die sogenannte .htaccess-Datei. Wenn Sie sich nicht sicher sind, fragen Sie Ihren Webspace-Provider.

Auch bei CMS-Systemen gibt es Unterschiede in der Handhabung von HTTP vs. HTTPS, wie auch der Verwendung des www-Prefix.

Bei WordPress etwa müssen Sie (wie auch wir bei unserem Unternehmens-Blog) nach einer Umstellung auf HTTPS zusätzlich die WordPress-Konfiguration auf den Aufruf via HTTPS anpassen. Dies erfolgt entweder in der WordPress-Administration oder über die Datei wp_config.php (hier finden Sie eine Erläuterung dazu). Das Gleiche gilt für die automatische Weiterleitung auf mit www oder ohne www – auch hier müssen die entsprechenden Anpassungen vorgenommen werden.

Beim Worldsoft-CMS, welches wir bei über 90% unserer Kunden einsetzen, müssen wir lediglich in der Administration eine einzige SSL-Einstellung aktivieren, und schon wird die Website automatisch nur über HTTPS ausgeliefert. Genauso einfach ist die Konfiguration dafür, ob Sie Ihre Website lieber mit oder ohne www-Prefix angezeigt bekommen möchten. Aus diesen und weiteren Gründen ist beim Worldsoft-CMS auch gar kein Zugriff auf eine .htaccess-Datei notwendig und möglich – alles wird bequem über die Administration eingestellt.

Was ist eine .htaccess-Datei?

Die .htaccess Datei ist eine Konfigurationsdatei im reinen Textformat, die in der Regel im Hauptverzeichnis eines Webauftritts angelegt wird. Hierbei handelt es sich in der Regel um das gleiche Verzeichnis, in dem sich auch die Inhaltsseite index.htm oder index.php befinden. Diese Datei bietet die Möglichkeit, Verzeichnis-spezifische Einstellungen für eine Domain und deren Unterseiten bzw. -verzeichnisse vorzunehmen.

Eine .htaccess Datei kann überall dort platziert werden wo der Besucherfluss kontrolliert werden soll. So ist es zum Beispiel möglich, Verzeichnisse, Seiten oder auch einzelne Dateien vor dem Zugriff von Besuchern zu schützen und Weiterleitungen (sogenannte Redirects) auf andere Verzeichnisse oder Seiten einzurichten. Eine permanente Weiterleitung wird auch als 301er-Redirect bezeichnet.

Der Zugriff auf die .htaccess-Datei unterscheidet sich ebenfalls von Provider zu Provider. Manche ermöglichen den direkten, editierenden Zugriff auf den Inhalt aus der Administration heraus. Bei anderen Anbietern ist die Verwendung eines FTP-Client-Programms (beispielsweise FileZilla) nötig, um die .htaccess-Datei herunterzuladen, den Inhalt zu bearbeiten, und die Datei anschließend wieder hochzuladen.

Ein wichtiger Hinweis: Bitte beachten Sie, dass fehlerhafte Eingaben in der .htaccess Datei schwerwiegende Auswirkungen bis hin zur Nicht-Erreichbarkeit Ihrer Website haben können. Änderungen an der .htaccess treten direkt nach der Speicherung bzw. dem Hochladen der Datei in Kraft. Erstellen Sie daher vor jeder Änderung der .htaccess Datei unbedingt eine Sicherungskopie – oder wenden Sie sich an Profis wie uns.

Die eierlegende Wollmilchsau (Universal-Lösung) einer .htaccess-Datei

Warum „eierlegende Wollmilchsau“?

Weil ich mir seit Jahren bis vor kurzem bei jeder vorzunehmenden Änderung einer .htaccess-Datei den kleinen grauen Gehirnkasten zermartern und mich oft über einige misslungene Versuche ärgern musste, bevor es dann gepasst hat. Was auch daran liegt, dass die Regeln für die Weiterleitung als sogenannte Regular Expressions (reguläre Ausdrücke, kurz RegEx) eingetragen werden. Und ich habe mich schon immer mit RegEx’s schwer getan, so auch zuletzt bei unserer Umstellung von muenchen-webdesign.de auf HTTPS/SSL.

Aber vor kurzem war die Umstellung auf HTTPS bei einem Online-Shop durchzuführen. Erschwerend kam hinzu, dass wir bestehende Weiterleitungen auf Ziele außerhalb des Online-Shops in der .htaccess-Datei beibehalten mussten. Was ich auch versuchte, es klappte nicht mit dem Wissen das ich schon hatte.

Also machte ich mich erneut auf die Suche im www-Dschungel nach einer universellen Lösungund wurde endlich fündig!

Nachdem ich diese Lösung in der .htaccess-Datei des oben erwähnten Online-Shops hinterlegt hatte, funktionierte plötzlich alles wie von Geisterhand richtig. Und auch wenn ich die Lösung inhaltlich verstehe, so wäre ich wohl nie in der Lage gewesen, diese selbst zu erstellen. Es sei denn, mit Hilfe eines mehrwöchigen Aufenthalts in einem Kloster in völliger Abgeschiedenheit (aber natürlich mit DSL-Anschluss)…

So sieht die Universal-Lösung für eine .htaccess-Datei für die Weiterleitung von HTTP nach HTTPS und mit www-Prefix aus

Nun will ich Sie aber nicht länger auf die Folter spannen, hier ist die Lösung:

RewriteEngine On
# ensure www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Einen Grundkurs (Tutorial) zur Verwendung und Erstellung von .htaccess-Dateien finden Sie hier.

Hier nur kurz erläutert was gemacht wird:

In der ersten Zeile wird mit RewriteEngine On das Modul mod_rewrite des Apache-Webservers gestartet. Ohne dieses Modul wären die restlichen Zeilen wirkungslos.

Die zweite und fünfte Zeile sind Kommentarzeilen. Alle Zeilen, die mit einem Hashtag # beginnen, sind Kommentarzeilen und ansonsten ohne Funktion.

Die dritte und vierte Zeile sorgen dafür, dass sämtliche eingehenden Anfragen mit dem Prefix (Subdomain) www an den Webserver gesendet werden. Zuerst wird mit dem Schlüsselwort RewriteCond (Rewrite Condition) festgelegt, welchem Muster die eingehende Anfrage (URL) entsprechend muss, damit dann die hinter dem Schlüsselwort RewriteRule (Rewrite Rule = Umschreibe-Regel) spezifizierte Anweisung bzw. Regel ausgeführt wird. Die 301 am Ende der vierten Zeile sorgt dafür, dass den Bots der Suchmaschinen diese Weiterleitung als permanente Weiterleitung (301er-Redirect) mitgeteilt wird.

Die letzten drei Zeilen sorgen dafür, dass sämtliche eingehenden HTTP-Anfragen auf eine HTTPS-Anfrage an den Webserver umgewandelt werden. Hier sind gleich zwei RewriteCond-Bedingungen zu erfüllen, bevor dann die hinter RewriteRule angegebene Regel ausgeführt wird. Auch hier ist in der achten Zeile die Kennzeichnung als 301er-Weiterleitung erkennbar.

Natürlich darf an dieser Stelle nicht der Verweis auf den Urheber dieser Lösung (Eric K) fehlen, dem ich auf ewig dankbar sein werde. Sie finden die Lösung im Original hier.

Screenshot der Antwort aus dem Orignal-Posting zur htaccess-Universal-Lösung für die Redirects auf https und mit www

Diese Lösung sollte auch mit relativ wenig Aufwand so umzuschreiben sein, dass immer auf „ohne www“ weiterleitet wird. Aber diesem Thema widme ich mich erst dann wenn der erste Kunde darauf besteht…

Fazit

Blut, Schweiß und Tränen ade! Ich bin heilfroh für künftige Weiterleitungs-Anforderungen endlich eine Universal-Lösung zu haben, die für jede Website-Domain einsetzbar ist. Und die trotzdem noch um funktionierende permanente Weiterleitungen (z.B. über RedirectPermanent) erweitert werden kann, ohne dass es Fehler gibt.

Ich hoffe, diese Universal-.htaccess-Datei hilft noch vielen weiteren Webmastern wie mir – viel Spaß damit!

Portraitbild Franz X. Kohl
Über Franz X. Kohl 59 Artikel
Inhaber von F/X Web Consulting (www.fx-web.de) und Betreiber des Unternehmens-Blogs www.muenchen-webdesign.de

9 Kommentare

  1. Besten Dank lieber Franz für die Erläuterungen.

    Ich hätte den Artikel mit „ReWrite für Dummies“ überschrieben :-) – obwohl, vieleicht ist das ja wieder eine der geschützten Buchtitel. Jedenfalls leicht verständlich erläutert.

    • Hallo Manfred,

      lieben Dank für Deinen Kommentar!

      Stimmt, „ReWrite for Dummies“ wäre sicher auch ein treffender Titel für den Artikel gewesen :-). Bei der Wahl des Titels habe ich mich natürlich wie üblich an Google Instant Search orientiert – schließlich ist ein Artikel wie dieser nur dann für möglichst viele Webmaster hilfreich wenn er auch gefunden wird.

      Danke auch für’s Feedback, dass der Artikel leicht verständlich formuliert ist – denn wenn man selbst Experte auf einem Gebiet wie Webdesign und das „Drumherum“ ist, dann ist es schon manchmal schwierig das Thema auf einem verständlichen Niveau zu erklären.

      Herzliche Grüße

      Franz X. Kohl

  2. Hallo,

    ich habe 3 Domains registriert (Domain1, Domain2, Domain3) die alle auf die gleiche Website führen. Ich möchte jetzt das kostenlose (Strato) inklusive SSL Zertifikat (Start) auf eine Domain (Domain1) einrichten.

    Frage:
    Wenn ich jetzt die htaccess wie oben beschrieben bearbeite, werden dann auch die Aufrufe über die nicht-https-Domains (Domain2, Domain3) auch auf die https-Domain Domain1 umgeleitet?

    Viele Grüße und besten Dank schon mal
    Micha

    • Hallo Micha,

      ja, das sollte kein Problem sein. Einfach die .htaccess für die Website mit SSL-Zertifikat und Domain1 wie oben beschrieben einrichten. Die bereits eingerichteten (HTTP-)Weiterleitungen für Domain2 und Domain3 auf die HTTP-URL von Domain1 sollten weiterhin funktionieren.

      Viel Erfolg und viele Grüße
      Franz X. Kohl

  3. Hallo Herr Kohl,

    Den ersten www. Redirect-Befehl habe ich auf meiner http://www.domain.de laufen. Allerdings habe ich noch eine zweite Domain ohne www. im Namen. Müsste der Code wie folgt angepasst werden oder habe ich etwas bezüglich der Weiterleitung übersehen?

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\. [NC]
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    # ensure https
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    Mfg
    Stefan

    • Hallo Stefan,

      das sieht für mich funktionstüchtig aus, sollte also klappen. Natürlich nur, wenn es sich hierbei um eine eigene .htaccess-Datei für die zweite Domain ohne www im Namen handelt – ich wüsste nicht wie man es kombiniert für beide Varianten (1x mit und 1x ohne www) in einer einzigen .htaccess hinbekommen sollte.

      Mit freundlichen Grüßen
      Franz X. Kohl

  4. Guten Abend,

    Wie sieht das mit den Unterseiten aus?

    Wenn ich Ihren Code in die htaccess Datei einfüge, zeigt es mir bei der Startseite keinen duplicate content Fehler mehr an, aber bei meinen 20 Unterseiten schon… Was kann ich tun?

    Freundliche Grüsse
    Dani

    • Hallo Dani,

      der dargestellte Code funktioniert wie oben beschrieben auch für alle Unterseiten – verantwortlich dafür ist, dass mit Hilfe der Variablen %{REQUEST_URI} gearbeitet wird, welche immer den vollständigen Teil der URL nach dem eigentlichen Hostnamen (der sich in %{HTTP_HOST} befindet) enthält.

      Ob eine Software/Programm/Lösung Duplicate Content anzeigt hat damit wenig zu tun, sofern die .htaccess korrekt erstellt wurde und „aktiv“ ist.

      Einfachstes Beispiel (wie ebenfalls im Artikel selbst erwähnt): wenn Du beispielsweise auf einer WordPress-CMS-Seite ein Theme mit einer Seitenleiste (Sidebar) verwendest, und dort ein Widget mit Textinhalt platzierst, dann wird dieser Text in der Regel (abhängig von den technischen Möglichkeiten des Themes) auf jeder Deiner Unterseiten angezeigt – und schon hättest Du den gleichen Inhalt auf mehreren oder gar allen Unterseiten dargestellt.

      Nach welchen Kriterien (z.B. prozentualer Anteil von sich wiederholendem Text am gesamten Text einer Inhaltsseite) die von Dir für das Aufspüren von Duplicate Content verwendete Software oder auch Google selbst arbeitet, können Dir nur der Anbieter des SEO-Tools oder Google selbst beantworten.

      Viele Grüße
      Franz X. Kohl

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*