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.
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.
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.
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 !!
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.
...
// 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.
Ein häufiger Grund für den Einsatz dieser Umschreibungsregel ist, dass doppelter Inhalt (duplicate content) in Suchmaschinen verhindert werden kann.