Bisher musste ich mich noch bei keiner Website um eine www.-Weiterleitung kümmern. Entweder war es nicht gewünscht, jemand anders administrierte den Server oder es wurde WordPress verwendet, das die Weiterleitung mit nur einem klick für einen übernimmt.

Gerade Arbeite ich an einer Homepage für einen Kunden, bei der ich auch die „Administration“ übernehmen soll. Administration deswegen in Anführungszeichen weil es sich nur um ein Webhosting handelt. Hier wird einem die Konfiguration sämtlicher Parameter, durch umfangreiche Webinterfaces, doch sehr erleichtert.

Ich bin schon seit Jahren Hetzner Kunde und absolut überzeugt. So läuft das besagte Webhosting natürlich auch bei Hetzner.

Die Weiterleitung auf https:// übernimmt das Webinterface mit einem klick für mich. Doch die www.-Weiterleitung muss ich mit der .htaccess Datei umsetzen.
Nach kurzem googlen, stieß ich auf einen Artikel von Hetzner selbst. Dort wurde folgender Inhalt der .htaccess Datei empfohlen:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.ihre-domain\.de [NC]
RewriteRule (.*) https://www.ihre-domain.de/$1 [L]

Ich habe ehrlich gesagt nicht lange über die Richtigkeit des Codes nachgedacht, erstellte die Datei mit dem Inhalt und lud sie ins Root-Verzeichnis hoch. Damit war das Thema für mich erledigt.

Doch dann fiel mir auf, dass Google die Seite mit www. UND ohne www. in den Google-Index aufgenommen hat. Und natürlich wurde auch noch die Seite ohne www. als kanonisch festgelegt.
Das leuchtete mir erst einmal gar nicht ein, bis ich mir die Logfiles ein bisschen genauer angeschaut habe. Und siehe da, alle Weiterleitungen auf die Domain mit www. waren 302-Redirects. Für diesen zweck braucht man aber einen 301-Redirect. Ich habe keine Ahnung, warum einem Hetzner diese Lösung vorschlägt.

Unterschied zwischen 301 und 302

Beide Redirects leiten den User (oder den Crawler) weiter auf das neue Ziel. Der Unterschied besteht in der Dauer und im Verhalten der Suchmaschinen Bots.

301 moved permanently ist, wie der Name schon sagt, für eine permanente Weiterleitung gedacht. Also zum Beispiel bei einem Domainumzug, Änderung der Url-Struktur oder bei der Änderung des Website Protokolls. Crawlern wird dadurch mitgeteilt, dass die alte Seit keine Relevanz mehr hat, wodurch diese Seite auch nicht mehr gecrawlt wird und aus dem Index genommen wird.

302 moved temporarily ist für eine kurze, temporäre Weiterleitung. Zum Beispiel für Saisonale Produkte in einem Online Shop. Ein Suchmaschinen-Crawler wird die „vorgelagerte“ Seite crawlen und in den Index aufnehmen, was mich zu meinem ursprünglichen Problem bringt.

www.-Weiterleitung mit 301 statt 302

Benutzt man nun das oben beschrieben Code-Schnipsel in seiner .htaccess Datei um auf die www-Version einer Webseite weiterzuleiten, produziert man eine 302-Weiterleitung, bei der die nicht www.-Version auch gecrawlt und indexiert wird. Das führt zu Duplicate Content den man aus SEO Sicht tunlichst vermeiden sollte.
Warum Hetzner in einem Hilfe-Artikel diese Art der Weiterleitung bei einem Webhosting empfiehlt, erschließt sich mir nicht. Vermutlich wurde hier einfach nicht ordentlich kontrolliert, was gepostet wird.
Durch eine kleine Anpassung lässt sich der Code selbstverständlich trotzdem nutzen.
Hier seht ihr die finale Version.

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.ihre-domain\.de [NC]
RewriteRule (.*) https://www.ihre-domain.de/$1 [R=301,L]