Samstag, 22. August 2009

Duplicate content in Google vermeiden.

Ein klassisches Problem.
Die eigene Webseite ist sowohl unter firmendienste24.de und www.firmendienste24.de erreichbar und das führt zu dem "duplicate content"-Problem in Google.
(firmendienste24.de dient hier durchgängig als Beispiel).

Wie leite ich unter Apache ein request an firmendienste24.de an www.firmendienste24.de weiter?

Man könnte eine VirtualHost-Klammer in Apaches httpd.conf erstellen und dort die Weiterleitung einrichten. Wenn man aber PLESK (z.B. unter SuSe-Linux) nutzt, stellt man schnell fest, dass die Lösung nicht so direkt ist... ;-)

Das Problem liegt darin, daß PLESK die Haupt-Konfigdatei
/srv/www/vhosts/firmendienste24.de/conf/httpd.include
jedes mal wenn man Änderungen in der PLESK-Oberfläche speichert, neu schriebt.

Daher steht in den Kommentaren, dass man die eigenen Settings in
/srv/www/vhosts/firmendienste24.de/conf/vhost.conf
platzieren soll.

Klingt ja zunächst nicht schlecht, wäre es nicht für das unglücklich platzierte include statement in der oben genanten Datei
/srv/www/vhosts/firmendienste24.de/conf/httpd.include
Die ist nämlich hier platziert:

<virtualHost>
...
Include /srv/www/vhosts/firmendienste24.de/conf/vhost.conf
</virtualHost>


Wie man hier sieht kann man hier nicht eine neue VirtualHost-Klammer öffnen...

Das Umleitungsproblem kann man unter Apache aber auch elegant mit einer Datei im root-Ordner der Webseite erschlagen. Die datei trägt den Namen ".htaccess". Eine Änderung darin bedarf nicht ein mal ein Apache Neustart.

Diese Lösung verlangt wiederum, daß das Apache rewrite-Modul geladen ist...

Das geht so:
In der Datei
/etc/sysconfig/apache2
die Variable APACHE_MODULES
um "rewrite" erwietern.

Nach dem Restart von Apache in der Datei
/etc/apache2/sysconfig.d/loadmodule.conf
prüfen ob das Modul rewirite geladen ist.
(Diese Datei wird nach jedem Neustart von Apache geschrieben, und kann daher nicht editiert werden!)
Wir suchen dabei diese zeile:
LoadModule rewrite_module /usr/lib/apache2-prefork/mod_rewrite.so

In der Datei
/srv/www/vhosts/firmendienste24.de/web/.htaccess
folgender Eintrag machen um die Weiterleitung zu vollziehen:

Rewritecond %{HTTP_HOST} !^www\.firmendienste24\.de
RewriteRule (.*) http://www.firmendienste24.de/$1 [R=301,L]

301 ist ein return code für den Browser, der besagt, dass es eine permanente Weiterleitung ist.

Benutzer von dem Framework symfony, stellen schnell fest, dass das Framework eine .htaccess Datei generiert. Der Innhalt kommt aber nicht zum tragen, da in der Datei geprüft wird, ob das rewrite-Modul geladen ist...:
<IfModule mod_rewrite.c>

Keine Kommentare:

Kommentar veröffentlichen