mod_rewrite bei Plesk will nicht, local geht es.

Hruendel

New Member
In Rahmen einer Suchmaschinenoptimierung müssen die Umleitungen aktiviert werden, da Google sich eine und dieselbe Sitemap-Datei auf neun (9) unterschiedlichen Wegen zieht. Wodurch die Anzahl der URLs sich vervielfacht, die Suchergebnisse und Suchleistung sind deutlich abgesunken. Alle überflüssigen Pfade müssen entweder ausgeschlossen oder auf einen Pfad umgeleitet werden. Über die Datei robots.txt wo die URLs bereits gesperrt sind meckert Google, zieht die Seitmaps (immer denselben auf unterschiedlichen Wegen) trotzdem. Google hat sich an den Sitemaps festgebissen.

Nun habe ich die versucht über mod_revrite etwas zu unternehmen. Kommischer Weise funktionieren die Regeln auf dem Ubuntu-Server von HE der mit Plesk läuft anders als sonst irgendwo. Die Abschnitte der vhost.conf funktionieren auf mehreren Servern, auf dem Plesk-Server nicht. Wobei zum Teil funktionieren sie.

Aufgabe ist URLs zu blocken oder umzuleiten.

Zu blockende URLs:
Code:
http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmapindex&no_html=1
http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmap&no_html=1&lang=en-EN
http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmap&no_html=1&lang=de-DE

Ziel-URL:
Code:
http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmap&no_html=1

Die vhost.conf

Diese Abschnitte hängen in der vhost.conf hintereinander. Der erste Abschnitt funktioniert immer. Die Anfragen werden immer sauber auf www. umgeleitet.

Code:
# Suchmascinenoptimierung - umleiten alles auf www.xxx
RewriteEngine On
Options +SymLinksIfOwnerMatch
RewriteCond %{HTTP_HOST} ^meine-domain.de
RewriteRule (.*) http://www.meine-domain.de$1 [R=301,L]

Der zweite Abschnitt ist auf zwei lokalen Rechnern getestet und funktioniert problemlos in der Pleskumgebung weigert sich aber.
Code:
#Google Sitemap-Optimierung
RewriteCond %{QUERY_STRING} (option=com_sefservicemap&task=xmlmapindex&no_html=1)$
RewriteRule ^index\.php$ http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmap&no_html=1$1 [R=301,L]

RewriteCond %{QUERY_STRING} (option=com_sefservicemap&task=xmlmap&no_html=1&lang=de-DE)$
RewriteRule ^index\.php$ http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmap&no_html=1$1 [R=301,L]

RewriteCond %{QUERY_STRING} (option=com_sefservicemap&task=xmlmap&no_html=1&lang=en-EN)$
RewriteRule ^index\.php$ http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmap&no_html=1$1 [R=301,L]
# Ende Google

Die Frage ist - warum RewriteCond hier nicht funktionert?
 
Die Frage ist - warum RewriteCond hier nicht funktionert?

2 Sachen die mir hier auf die schnelle aufgefallen sind:

a) Falls die 1. Regel anschlägt, werden die restlichen nicht mehr abgearbeitet (Qualifier L in den [])

b) Du musst den Pfad absolut in der vhosts.conf angeben, also z.B.
Code:
RewriteCond %{QUERY_STRING} (option=com_sefservicemap&task=xmlmapindex&no_html=1)$
RewriteRule ^/index\.php$ http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmap&no_html=1$1 [R=301,L]

Evtl. benötigst Du noch eine RewriteBase-Angabe, sollte aber auch ohne klappen. Und im Fehlerfall ist das ErrorLog immer eine gute Sache :o
 
RewriteRule ^index\.php$ http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmap&no_html=1$1 [R=301,L]
Ich frage mich folgendes:
a) Warum einen 301 werfen? Erzeugt lediglich einen (unnötigen) zweiten Request.
b) $1 ist undefiniert.

Zum Testen von Rewrite-Regeln kann man auch das RewriteLog anschalten.

huschi.
 
Ha... Jetzt, Ja!

Wie huschi schon erwänt hat, ist $1 überflüssig. Habe den Log eingeschaltet, bin aber mit dem nicht viel weiter gekommen (LogLevel2 - zu akribisch). Pfade waren schon absolut. [L] - Last, ist hier in Ordnung. 301 lasse ich zunächst drin, sind ehe nur Paar Suchmaschinen am Tag, habe aber irgendwo gelesen, dass Google es so besser mag.

Weitergebracht hat mich die zweite Zeile:
Code:
RewriteRule (.*) http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmap&no_html=1$1 [R=301,L]

Statt
Code:
RewriteRule ^index\.php$ http://www.meine-domain.de/index.php?option=com_sefservicemap&task=xmlmap&no_html=1$1 [R=301,L]

Jetzt geht es!
 
Last edited by a moderator:
Die Umleitungen haben bei Google wenig gebracht, jedes Mal werden die URLs wieder als einzelne URLs gezählt. Die Sitemapskopien sind nun mit folgender Regel geblockt.

Code:
RewriteCond %{QUERY_STRING} (option=com_sefservicemap&task=xmlmapindex&no_html=1)$
RewriteRule .* - [F,L]

RewriteCond %{QUERY_STRING} (option=com_sefservicemap&task=xmlmapindex&no_html=1)$
RewriteRule .* - [F,L]

RewriteRule .* - [F,L] blockiert die Seite und liefert Rückmeldung "Forbidden". Nun gibt es nur ein Sitemap, jetzt muss es richtig laufen.
 
Back
Top