SEO: Domainaufruf mit oder ohne www umschreiben
Veröffentlichungsdatum: 15. Januar 2016
Änderungsdatum: 14. Juli 2022
htaccess mod_rewrite rewrite umschreiben seo suchmaschinen
Dieser Artikel beschreibt, wie Sie den Aufruf Ihrer Domain(s) so umschreiben, dass dieser entweder mit oder ohne www erfolgt.
Webserver sind in der Regel so konfiguriert, dass eine Domain gleichzeitig auch über die gängige www-Subdomain aufgerufen werden kann (domain.dd, www.domain.dd). Suchmaschinen können das ggf. als doppelten Inhalt (Duplicate Content) ansehen, weshalb es in solchen Fällen ratsam sein kann, die nicht gewünschten URL-Aufrufe umzuleiten (z.B. domain.dd -> www.domain.dd). Entsprechend bekommen Seitenbesucher in der Adressleiste des Browsers und auch die Suchdienste nur die gewünschte Domain bzw. Subdomain angezeigt.
Hierzu bietet sich eine htaccess-Datei oder eine Abfrage über PHP an.
Beim Einsatz einer aktuellen BASE Classic 2.x bzw. BASE (Mobile First) können Sie übrigens alternativ zu den unten angeführten Umsetzungen direkt in den Projekteinstellungen des Inhaltsprojektes festlegen, welche Domain herangezogen werden soll. Im Feld "Nur über folgende Domain aufrufbar" hinterlegen Sie Ihre Domain entweder mit oder ohne www (z.B. www.domain.dd).
Über den Skript-Code in der pre.php und wMyProject.php wird dies über die Funkion wMyProject::executeAccessRules() vorgenommen.
Beispiel 1: Umsetzung über Projekteinstellungen
Aktuelle BASE Projekte verfügen bereits über den erforderlichen Code (ähnlich Beispiel 3), damit durch Angabe in den Projekteinstellungen des Inhaltsprojektes die Domain angegeben werden kann, über welche Seitenbesucher den Aufruf nur vornehmen können.
Sollte dies in Ihrem Projekt nicht funktionieren, sind die erforderlichen Einträge in der pre.php und wMyProject.php nicht vorhanden. Sie können diese entweder auf Grundlage des aktuellen Projektes nachrüsten oder eine der folgenden Umsetzungen wählen.
Beispiel 2: Umsetzung über .htaccess (mod_rewrite)
Legen Sie eine .htaccess Datei auf oberster Ebene der Domain ab. Informationen zur Syntax innerhalb der htaccess-Datei finden Sie über die weiterführenden Informationen. Entscheiden Sie in der Rewrite-Regel, ob Sie die Aufrufe mit oder ohne www definieren wollen.
Beispiel: Auszug aus /.htaccess zum Umschreiben von nicht-www-Aufrufen
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^domain\.dd$ [NC]
RewriteRule ^(.*)$ https://www.domain.dd/$1 [NE,R=301,L]
# wenn Sie die Aufrufe ohne www setzen wollen:
# RewriteCond %{HTTP_HOST} ^www\.domain\.dd$ [NC]
# RewriteRule ^(.*)$ http://domain.dd/$1 [R=301,L]
## !! Beachten Sie die Hinweise unten !!Beispiel 3: Umsetzung über PHP (pre.php)
Alternativ zur Umsetzung über mod_rewrite (.htaccess) können Sie auch über PHP eine entsprechende Abfrage in der pre.php des globalen Projektes vornehmen. Platzieren Sie dies direkt nach dem schon vorhandenen Include der grid.php.
Folgendes Beispiel führt dies an und nutzt dafür die Server-Umgebungsvariable HTTP_HOST, also die aufrufende Domain.
Beispiel: Auszug aus der pre.php des Global-Projektes
...
// Hier wird das Weblication Framework eingebunden
include_once($_SERVER['DOCUMENT_ROOT'].'/weblication/grid.php');
// Nicht-www-Aufruf auf www umleiten:
if(!preg_match('/www\./', $_SERVER['HTTP_HOST'])){
$_SERVER['HTTP_HOST'] = 'www.'.$_SERVER['HTTP_HOST'];
$urlRedirect = wRequest::getDomain().$_SERVER['REQUEST_URI'];
header("Location: ".$urlRedirect, true, 301);
exit;
}Beim Einsatz von Subdomains sollten Sie besser anstatt der HTTP_HOST Variable die gewünschte (Sub)Domain direkt im Code angeben.
Allgemeines
Ein häufiger Grund für den Einsatz dieser Umschreibungsregel ist, dass doppelter Inhalt (duplicate content) in Suchmaschinen verhindert werden kann.
- Passen Sie die Domainangaben an Ihre Domain(s) an!
- Der Server muss mod_rewrite unterstützen, was Sie bei Ihrem Provider erfragen können!
- Sofern in einem Unterverzeichnis über eine .htaccess-Datei der Befehl "RewriteEngine ON" gesetzt wird, gilt die Vererbung der im Verzeichnis höher liegenden .htaccess-Datei nicht mehr. Es müssen also in dieser neuen .htaccess-Datei alle Befehle erneut gesetzt werden (Pfadangaben ggf. anpassen)!
Weiterführende Links
- Warum sollte ich meine Domain so umschreiben, dass sie nur mit oder nur ohne www erreichbar ist?
- Webserver erlauben häufig sowohl <code class="codeInline">domain.dd</code> als auch <code class="codeInline">www.domain.dd</code>. Suchmaschinen können das dann als doppelten Inhalt (Duplicate Content) werten. Durch Redirects wird festgelegt, welche Variante die gewünschte „kanonische“ URL ist (z.B. <code class="codeInline">domain.dd</code> → <code class="codeInline">www.domain.dd</code>).
- Welche Redirect-Möglichkeiten werden in dem Artikel beschrieben?
- Der Artikel nennt drei Ansätze: 1) über Projekteinstellungen (z.B. Feld „Nur über folgende Domain aufrufbar“), 2) über eine <code class="codeInline">.htaccess</code>-Datei mit <code class="codeInline">mod_rewrite</code>, 3) über PHP mit einer Prüfung in der <code class="codeInline">pre.php</code> (globales Projekt).
- Wie funktioniert die Umsetzung über Projekteinstellungen (Beispiel 1)?
- In aktuellen Projekten kann in den Projekteinstellungen im Feld **„Nur über folgende Domain aufrufbar“** die gewünschte Domain festgelegt werden (mit oder ohne www, z.B. <code class="codeInline">www.domain.dd</code> oder <code class="codeInline">domain.dd</code>). Ein hinterlegter Skript-Code (u.a. <code class="codeInline">wMyProject::executeAccessRules()</code>) setzt diese Zugriffsregeln um. Falls es in Ihrem Projekt nicht funktioniert, sind ggf. die erforderlichen Einträge/Code in <code class="codeInline">wMyProject.php</code> und <code class="codeInline">pre.php</code> nicht vorhanden—dann nachrüsten oder eine der anderen Varianten nutzen.
- Wie setze ich die Umleitung mit einer .htaccess-Datei um (Beispiel 2)?
- Legen Sie eine <code class="codeInline">.htaccess</code>-Datei auf oberster Ebene der Domain ab und verwenden Sie <code class="codeInline">RewriteEngine on</code>, <code class="codeInline">RewriteCond</code> und <code class="codeInline">RewriteRule</code>. Entscheiden Sie dabei, ob Sie Aufrufe mit oder ohne <code class="codeInline">www</code> erlauben. Beispiel für „nicht-www → www“: - <code class="codeInline">RewriteCond %{HTTP_HOST} ^domain\.dd$ [NC]</code> - <code class="codeInline">RewriteRule ^(.*)$ https://www.domain.dd/$1 [NE,R=301,L]</code> Für „www → nicht-www“ können die Rewrite-Bedingungen entsprechend umgedreht werden (siehe Kommentar im Artikel).
- Was muss ich bei der .htaccess-Umsetzung besonders beachten?
- Wichtige Hinweise aus dem Artikel: - Passen Sie die Domainangaben an Ihre Domain(en) an. - Der Server muss <code class="codeInline">mod_rewrite</code> unterstützen (beim Provider erfragen). - Wenn <code class="codeInline">RewriteEngine ON</code> in einem Unterverzeichnis gesetzt wird, wird die Vererbung der höherliegenden <code class="codeInline">.htaccess</code>-Regeln aufgehoben. In der neuen <code class="codeInline">.htaccess</code> müssen dann alle benötigten Befehle erneut gesetzt werden (Pfadangaben ggf. anpassen).
- Wie funktioniert die Umsetzung über PHP in der pre.php (Beispiel 3)?
- Sie prüfen in der <code class="codeInline">pre.php</code> des globalen Projekts direkt nach dem Include (z.B. nach <code class="codeInline">include_once(.../grid.php');</code>) anhand der aufrufenden Domain (<code class="codeInline">$_SERVER['HTTP_HOST']</code>). Wird festgestellt, dass kein <code class="codeInline">www</code> vorhanden ist, wird die Domain auf <code class="codeInline">www.</code> erweitert, eine Redirect-Location erzeugt und mit HTTP-Status <code class="codeInline">301</code> umgeleitet. Beispielhafte Logik: - Wenn <code class="codeInline">HTTP_HOST</code> nicht mit <code class="codeInline">www.</code> beginnt: <code class="codeInline">HTTP_HOST</code> auf <code class="codeInline">www.</code>-Variante setzen - Redirect-URL aus Domain + <code class="codeInline">REQUEST_URI</code> bilden - <code class="codeInline">header("Location: ...", ..., 301);</code> ausführen und <code class="codeInline">exit;</code> aufrufen.
- Sollte ich in der PHP-Umleitung HTTP_HOST oder eine (Sub)Domain direkt verwenden?
- Der Artikel empfiehlt: Beim Einsatz von Subdomains sollten Sie statt der <code class="codeInline">HTTP_HOST</code>-Variable besser die gewünschte (Sub)Domain direkt im Code angeben, um zuverlässiger zu steuern, wohin umgeleitet wird.
- Welcher Hauptgrund wird für die Umschreibung im Allgemeinen genannt?
- Ein häufiger Grund ist die Vermeidung von **doppeltem Inhalt (duplicate content)** durch Suchmaschinen, indem eine bevorzugte URL-Variante (mit oder ohne <code class="codeInline">www</code>) per Redirect gesetzt wird.