301 Redirect ohne www auf www und umgekehrt mit mod_redirect

2009-08-16 - kostaki 6 Kommentare »

Aus SEO Sicht ist es wichtig doppelten Content zu vermeiden und weil für eine Suchmaschine die Adresse http://debianroot.de eine andere ist als http://www.debianroot.de muss man sich etwas einfallen lassen. Man sollte sich beim Veröffentlichen einer neuen Website für eine Variante entscheiden und bei dieser bleiben. Da der User das natürlich nicht weiß, muss man ihm die Entscheidung abnehmen. Bisher habe ich das immer mit einer hardcoded Version des Domainnamens gemacht. So muss man es aber bei jeder neuen Seite anpassen. Hier nun also eine dynamische Lösung die man nichts mehr anpassen muss. Ach ja man braucht mod_rewrite dafür.

Den folgenden Code packt man in eine .htaccess Datei in der Root der Website. Man kann es auch direkt in die vhost Config schreiben (so mache ich es seit neuestem).

So wandelt man alle Aufrufe ohne www auf Adressen mit www um.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^/(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

Und so geht es anders herum

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
</IfModule>

Super Sache!

Bei der Entscheidung ob www oder no-www werden selbst Systemadministratoren zu Philosophen. Hier noch zwei Seiten die sich mit dem Thema beschäftigen.

Related Links

  1. 6 Kommentare

  2. TeX
    schrieb am 02.08.2010 um 13:07 Uhr

    Ist zwar hübsch ^^, aber was is mit Subdomains? Solltest noch prüfen ob nur 1 Punkt drin vorkommt ;-) .

  3. kostaki
    schrieb am 02.08.2010 um 13:23 Uhr

    Stimmt ist mir auch schon aufgefallen. Wenn man mit einer Subdomain ankommt, wird man auf http://www.subdomain.domain.tld umgeleitet. Das meinst du doch oder?

  4. TeX
    schrieb am 29.09.2010 um 13:45 Uhr

    Jop, also alles was nicht www ist, sollte er ignorieren. Das halt die Subdomains weiterhin funktionieren. Falls in der URL nur 1 Punkt vorkommt, einfach auf www. umleiten.

  5. David
    schrieb am 13.07.2011 um 08:50 Uhr

    Vielen Dank für diese Lösung. Folgender .htaccess Inhalt hat mir geholfen:

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

    Somit werden alle Startseitenaufrufe ohne www. auf www. weitergeleitet. Sollte eine Subdomain eingegeben werden, wird diese Rewrite Rule nicht verwendet.

    Was jedoch noch ein kleines Problem ist:
    Sobald ich folgendes eingebe:

    domainname.de/unterverzeichnis/hallo.html

    wird nicht automatisch auf

    http://www.domainname.de/unterverzeichnis/hallo.html

    weitergeleitet. Kann mir evtl. jemand einen Tipp geben, wie ich den obigen Code modifizieren muss, damit das auch funktioniert?
    Vielen Dank.

  6. David
    schrieb am 13.07.2011 um 09:49 Uhr

    Habe nun die Lösung gefunden. Mit dieser Anweisung funktionieren auch Unterverzeichnisse etc. in der Url auch und werden automatisch auf www weitergeleitet:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^[^.]*\.[^.]*$
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

  7. me
    schrieb am 12.05.2012 um 19:56 Uhr

    Hi,

    performanter ist wahrscheinlich trotzdem ein einfaches
    Redirect 301 / http://zielhost.de/

    Mit RedirectMatch geht das auch dynamisch; also genau, was du möchtest:
    http://httpd.apache.org/docs/current/en/mod/mod_alias.html#redirectmatch

    Schöne Grüße

Kommentar schreiben

*

*