[toc]
Inzwischen dürfte die Möglichkeit eigene Seiten sowie deren Aktualisierungen (z.B. Blogposts) per sitemap.xml an Google zu übermitteln wohl den meisten Webseitenbetreibern geläufig sein. Für den Fall der Fälle finden sich in den Webmaster Tools bei Google weitere Informationen dazu.
Klassische WordPress-Plugin-Lösung
Für WordPress gibt es schon seit einiger Zeit ein sehr einfaches und gutes Plugin von Arne Brachhold, das die automatische Erzeugung und Aktualisierung dieser sitemap.xml sowie deren komprimiertem Pendants “sitemap.xml.gz” übernimmt. Wir haben dieses Plugin u.a. auf dem offiziellen Internetauftritt der Forschungsgruppe München www.kooperationssysteme.de im Einsatz. Nachdem diese aktuell extern gehostete Seite allerdings in unsere inzwischen stetig gewachsene und weiterentwickelte WordPress Multiblogging-Plattform umziehen sollte und die aktuelle “stable” des Plugins nicht Multisite-fähig war, ging die Alternativensuche los.
Multisite-fähige Plugins
Sucht man in den WordPress Plugins nach “google sitemaps multisite” findet man als ersten Treffer zunächst das vielversprechend klingende Plugin Google XML Sitemaps with Multisite support von Mario Kostelac, das nach näherer Begutachtung auf der oben erwähnten Erweiterung aufbaut und nach eigenen Angaben einen Großteil des Codes von Arne Brachhold verwendet:
99% percent of work is done by Arne so, thank you Arne. I hope that our projects will merge into the one in the near future.
Haupteinschränkung des Plugins: Es verwendet immer noch von Zeit zu Zeit (statisch) erzeugte Sitemap-Dateien und legt diese in einem Unterordner “sitemaps” im Webroot bzw. WordPress-Installationsverzeichnis ab. Diese müssen dann bei einer Multisite-Installation für die einzelnen Blogs per manuellem Rewrite oder über Anpassungen der robots.txt integriert werden, was mit Zusatzaufwand verbunden ist.
Bei der weiteren Recherche nach brauchbaren Plugins bin ich anschließend sehr schnell über eine Weiterentwicklung der ursprünglichen Erweiterung gestolpert, die sich zwar aktuell noch in der Beta-Phase befindet, Ihren Dienst aber mit ein paar minimalistischen Einschränkungen schon sehr gut macht. Details auf der entsprechenden Website von Arne Brachhold. Wie man dem Changelog entnehmen kann, unterstützt die Beta nicht nur Multisite-Installationen, sondern erzeugt die sitemap.xml für die einzelnen Blogs “on the fly”, wodurch keine umständlichen Rewrites oder Eintragungen in der robots.txt mehr erforderlich sind:
- No static files anymore, sitemap is created on the fly!
- Sitemap is split up into sub-sitemaps by month, allowing up to 50.000 posts per month!
- Reduced server resource usage due to less content per request.
- 100% Multisite compatible, including by-blog and network activation.
- New API allows other plugins to add their own, separate sitemaps.
Nachdem ich das Plugin im Root-Blog einer WordPress-Installation (3.0.4) getestet habe, die u.a. auch Buddypress (1.2.7) nutzt, scheint es wohl aus diesem oder einem mir unerfindlichen anderen Grund ein Problem mit dem Rewrite der url blog.de/sitemap.xml zu geben, das mich erst zu dem Glauben veranlasst hat, das Plugin würde überhaupt nicht funktionieren. Nach etwas Recherche und Testen in anderen (nicht-root) Blogs der Multisite-Installation wurde dann aber schnell klar, dass die Sitemaps jeweils korrekt erzeugt wurden. Lediglich im Root-Blog konnte die Sitemap nicht über blog.de/sitemap.xml, sondern ausschließlich über die Non-Permalink-Variante blog.de/index.php?xml_sitemap=index aufgefrufen werden.
Anpassung der .htaccess-Datei
Durch einen Blogpost von Jan Dembowski zu einer Anpassung des verwendeten Plugins (der zwar in dieser Form inzwischen aufgrund der aktuellen Beta veraltet ist, jedoch für den vorliegenden Fall sehr hilfreich war), ließ sich auch das Problem mit dem Root-Blog durch Einfügen einer weiteren Rewrite-Rule in der .htaccess-Datei von WordPress lösen:
RewriteRule ^sitemap.xml index.php?xml_sitemap=index [L]
Pingback: Beliebteste Suchbegriffe » WordPress XML Sitemap für Multisite-Installationen …
Kurzes Update: Durch ein Upgrade unserer WordPress Multisite Installation hat die bisher verwendete Betaversion des Sitemap-Plugins leider aufgehört zu funktionieren. Mittlerweile (seit dem 06.08.2011) gibt es allerdings eine neue Version des Plugins 4.0b7 zum Download auf http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/#P18DL, durch die der oben aufgeführte Eintrag in der .htaccess hinfällig wird und die auch mit neueren WP-Versionen wieder funktioniert.
Allerdings werden in dieser Version momentan trotz Vorhandensein des Eintrags $wp_rewrite->flush_rules(false) in der statischen Funktion ActivateRewrite() der Datei sitemap-loader.php die vorhandenen WordPress Rewrite Rules nicht richtig aktualisiert, so dass für den erfolgreichen Einsatz des Plugins folgender Filter in der functions.php des verwendeten Themes hinzugefügt werden musste:
Basierend auf der Diskussion auf http://wordpress.org/support/topic/custom-rewrite-rules-stopped-working-with-31 scheint in einigen Fällen auch das Entfernen des Canonical-Redirects mit nachfolgendem Eintrag in der functions.php geholfen zu haben, was in unserem Fall allerdings erfolglos blieb:
Inzwischen haben wir die Sitemap-Generierung auf das Plugin “XML Sitemap & Google News Sitemap Feeds” aus
http://wordpress.org/extend/plugins/xml-sitemap-feed/ umgestellt und damit im Kontext von Multisite-Installationen sehr gute erste Erfahrungen gemacht.
Das Plugin lässt sich sehr unkompliziert installieren und erzeugt neben Standard- und News-Sitemaps auch die entsprechenden Einträge in der robots.txt dynamisch.Weitere Informationen zum Plugin finden sich aim Blog von 4Visions unter
http://4visions.nl/en/wordpress-plugins/xml-sitemap-feed/.
Klasse. Vielen Dank. Funktioniert so prächtig.