301 Redirect für Domains einrichten

Die Domainweiterleitung (oder URL forward) wird zum Beispiel benutzt, um die bekannte Duplicate-Content-Problematik bei Google zu verhindern und die Suchmaschinen-Freundlichkeit zu steigern. Das heisst, eine Website ist auch wirklich nur unter einer Adresse erreichbar, nicht unter mehreren. So wäre es also beispielsweise suboptimal, wenn dieser Artikel unter den URL’s http://www.marcusegger.de/2010/01/24/301-redirect-einrichten/ und http://marcusegger.de/2010/01/24/301-redirect-einrichten/ erreichbar wäre. Domainweiterleitungen können auf verschiedene Weise mit HTTP-Statuscode-Definitionen ab 300 erreicht werden. Das Mittel der Wahl ist im Beispiel natürlich der permanent redirect, also die Weiterleitung per 301.

Der generelle Rewrite von http://domain.de auf www.domain.de kann auf veschiedene Weise implementiert werden, zum Beispiel über eine .htaccess-Datei in der Webroot. Hier würde man folgende Bedingung und Rule definieren:


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

(Funktioniert so natürlich nur auf einem Linux-Server mit aktiviertem Apache-Modul „mod_rewrite“)

Idealerweise schreibt man die Rewrite-Rule direkt in die Apache-Konfiguration, aber nicht immer hat man Zugriff darauf, deswegen hier oben die .htaccess-Variante.

Hier noch eine Auflistung von programmatischer Implementierung in verschiedenen Sprachen:

ColdFusion/CFML
——————

<cfheader statuscode="301" statustext="Moved permanently" />
<cfheader name="Location" value="http://www.newdomain.com" />

PHP
——————

<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.newdomain.com" );
?>

PERL
——————

$q = new CGI;
print $q->redirect("http://www.newdomain.com");

Ruby on Rails
——————

def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.newdomain.com"
end

ASP
——————

<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.newdomain.com/"
%>

ASP.NET
——————

<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.newdomain.com");
}
</script>

Java
——————

<%
response.setStatus(301);
response.setHeader( "Location", "http://www.newdomain.com" );
response.setHeader( "Connection", "close" );
%>

Schreibe einen Kommentar