Feb 08
Feb 08
Problem
Alle Anfragen an zB.: die-hatta.org (z.B. Subdomains á la style.die-hatta.org oder “vertipper-subs” á la ww.die-hatta.org) sollen permanent umgeleitet werden auf http://www.die-hatta.org.
Einfache Umleitungen mittels mod_rewrite und .htaccess-Datei:
RewriteEngine on
RewriteBase /RewriteCond %{HTTP_HOST} !^www\.die-hatta\.org$ [NC]
RewriteRule ^(.*)$ http://www.die-hatta.org/$1 [L,R=301]
Syntax:
In der Rewrite Condition:
%{HTTP_HOST} : In dieser Variablen steht die angeforderte Domain
[NC] : Nicht case-sensitive
In der Rewrite Rule:
^ : Am Anfang
(.*) : .* string wird in $1 geschrieben
$ : Am Ende
[L] : Nach dieser Regel keine weitere ausführen
R=301: 301 permanente Weiterleitung
Wir sagen also:
Wenn die angeforderte Domain NICHT www.die-hatta.org ist, benutze die RewriteRule und setze http://www.die-hatta.org/ und alles was nach dem / angefordert wurde ($1, z.B. seite1.php). Außerdem soll die Weiterleitung permanent (R=301) gelten.
Vielen Dank hierbei an SEO-Scout.org für den endlich mal logischen Artikel zum Theme WWW oder nicht WWW vor der Domain
Tags: 301, apache, domain, htaccess, htaccess redirect, Http, Lösung, mod_rewrite, Permalink, RewriteCond, RewriteRule, seoScout, Weiterleitung, www
Es passt nicht ganz zum Topic, hilft aber vielleicht auch dem einen oder anderen:
Ich habe bei mir Links per Standardpermalink generieren lassen, also:
http://www.dark-hh.de/2008/01/25/master-and-servant-kir/
Dies ist natürlich schön suchmaschinenfreundlich und z.B. Google verweist auch auf viele dieser Seiten. Nun stellte ich fest, dass für zukünftige Erweiterungen, diese Permalinkstruktur nicht gut ist. Ich brauche eine Struktur wie folgt:
http://www.dark-hh.de/posts/2008/01/25/master-and-servant-kir/
Also mit einem “posts” zwischen URL und dem Rest des URI. In Wordpress ist dies schnell erledigt, und die Seite reagiert wie gewohnt, aber leider zeigen nun alle indizierten Seiten ins Nirvana, so dass diese mittelfristig bei Google rausfliegen und Suchende frustriert von meiner Seite verschwinden, wenn sie ein “Diese Seite existiert nicht mehr” zu sehen bekommen.
Als Lösung bietet sich eine weitere Rewrite Condition in der .htaccess an:
RewriteCond %{REQUEST_URI} ^/[0-9]{4}/[0-9]{2}/[0-9]{2}/.*$ [NC]
RewriteRule ^(.*)$ http://www.dark-hh.de/posts/$1 [L,R=301]
Diese macht folgendes:
1. Prüfen ob die REQUEST_URI mit dem Format /2008/01/17 o.ä. anfängt, wenn ja, dann
2. Umschreiben der URL indem vor dem URI ein http://www.dark-hh.de/posts/ gestellt wird.
Aus
http://www.dark-hh.de/2008/01/25/master-and-servant-kir/
wird also
http://www.dark-hh.de/posts/2008/01/25/master-and-servant-kir/
Somit kommt der Suchende nun wieder zum korrekten Ergebnis. Und das schönste ist, wir teilen Google & Co mit dem [R=301] automatisch mit, dass die angeforderte Seite verschoben wurde (301 = Permanent Redirect). Bei der nächsten Indizierung wird Google die Indexe anpassen und kein Content geht verloren.