Eigentlich sind die Zeiten vorbei, wo SEF für Joomla schwer erkämpft werden musste. Zum einen liefert Joomla ab 1.5. und stabil bei mir zumindest im Test mit Joomla 1.5.9 ein eigenes gutes SEO/SEF zum anderen gibt es hervorragende SEF-Tools, wie z.B. sh404SEF, welches das schafft was Joomla-SEF nicht zustande bringt: a) Unterstützung von SEF auch für 3rd-Party-Komponenten wie z.B. virtueMart und b) neben dem eigentliche URL-SEF auch die suchmaschinengerechte Implementierung von META-Tags und einiges mehr.
Trotzdem gibt es immer mal wieder Fallstricke die die Arbeit dieser Tools verhindern, wenn man nicht alles wichtige beachtet und dabei akriebisch vorgeht.

Aktivierung von Joomla-SEF

Die Componente "sh404SEF" läuft nicht ohne das Joomla-SEF, also muss dieses zunächst aktiviert werden. Dazu geht man im Backoffice unter "Site" > "Konfiguration". Hier befindet sich unter dem Registerreiter "Site" rechts der Bereich Suchmaschinen-Optimierung (SEO). Alle drei dort befindlichen Optionen müssen aktiviert werden.
  • Zunächst sollte die erste Option aktiviert werden: "Suchmaschinenfreundliche URLs". Das sollte sofort Wirkung zeigen und die URSs nun schon wir folgt aussehen lassen: ...index.php/faq/1-wissen/1-nicht-vergessen
  • Dann die Option "mod_rewrite nutzen". Diese sorgt dafür dass die .htaccess die im Joomla/Server-Root liegen sollte verwendet wird. Joomla liefert dazu eine fertige gut opitmierte htaccess.txt, die eigentlich nur noch umbenannt werden mus in .htaccess. Mehr ist dafür nicht nötig. Eine weitere Anpassung der .htaccess war in meiner Praxis nicht nötig. Die htaccess schmeißt z.B. ein paar Dinge aus der URL heraus, die dort nicht hineingehören, wie das /index.php/ und sonstige unschöne Sonderzeichen.
  • Schließlich kann man der URL die jetzt aus der Domain und einem generiertem Pfad zusammengesetzt ist noch den Look verpassen, als ob eine HTML-Datei aufgerufen wird. Dazu wird die 3. Option aufgerufen die dann z.B. .html an die URL anhängt.

sh404SEF hinzufügen

Zu den Gründen sh404SEF zusätzlich zum Joomla-SEF zu nutzen hatte ich eingangs schon welche angeführt, genau die beiden für mich am wichtigsten. Denn wer ein Shop in seinem Joomla implementieren will, kann sicher nicht damit leben, dass Joomla die Shop-URLs nicht suchmaschinengerecht verarbeitet. Auch die Arbeit mit Meta-Tags wird sehr viel besser unterstützt.
Die Komponente sh404SEF kann man sich hier http://extensions.siliana.com herunterladen. Ich habe installiert die Version 1.0.16 für Joomla 1.5.native (com_sh404SEF-15_1.0.16_Beta_build_222.joomla1.5.x.zip). Die Componente wird über den Joomla-Installer installiert, was immer reibungslos funktionierte.
Nun kommen ein paar ganz wichtige Dinge, die zu den Stolperfallen zählen.
Also nachdem wie oben beschrieben zunächst das Joomla-SEF aktiviert wurde, kann sh404SEF eingerichtet werden.
  • Ganz wichtig. Zunächst gleich mal per ftp-Client in das Verzeichnis /joomlapfad/administrator/components/com_sh404sef wechseln. Hier müssen nämlich neben diesem Verzeichnis selbst(!) Verzeichnisrechte Schreibrechte 777 erhalten. Leider steht das nirgens, ich mußt es selbst herausfinden. Von sh404SEF wird das zwar geprüft aber die Prüfung findet nur statt wenn das "speichern" als Option überhaupt aktiviert wurde. Macht man das schon nicht, dann wird auch dieser Missstand nicht angemahnt und man kann Stunden in der Componente herumstochern ohne die gewünschten Ergebnisse.
    Also im Detail: es betrifft dort die Verzeichnisse (hier also mit 777, im Fall des von Joomla genutzten FTP-Layers setzen):
    • /config/
    • /logs/ und
    • /security/
    und die Datei /config/config.sef.php, die die Rechte 666 erhalten muss.
    Außerdem gibt es im Verzeichnis /joomlapfad/components/com_sh404sef noch ein Pfad /cache/. Wenn das cachen genutzt werden soll, dann muss auch dieses Verzeichnis Schreibrechte erhalten.
  • Nun weiter zur Konfiguration von sh404SEF. Die Komponente wird aufgerufen und dann die "Konfiguration" angeklickt. Im zuerst erscheinenden Registerreiter "Allgemein" die Option "Aktiviert" auf "Ja" schalten und anschließend diese Einstellungen speichern. Nun kann man sich die Auswirkungen auf der Website anschauen.
  • Sollte es zu Problemen kommen, empfiehlt es sich die Konfiguration wieder aufzurufen und auf den Registerreiter "Erweitert" zu wechseln. Hier finden wir weiter ganz wichtige Einstellungen.
    • Zunächst den Rewrite-Modus. Es ist in jedem Fall der Modus "Mit .htaccess (mod_rewrite) zu empfehlen. Dieser nutzt die oben beschriebene .htaccess und liefert die besten Ergebnisse. Sollte es hiermit trotz aller Bemühungen zu Problemen kommen (dazu mehr unten), dann kann optional umgeschaltet werden auf "ohne .htaccess (index.php)" oder "ohne .htaccess (index.php?). Die dritte Variante ist die robusteste aber mit dem Nachteil, dass eben "index.php?" hinter der Domain und vor den Pfadangaben in der URL auftaucht.
    • Dann könnte hier der Cache eingeschaltet werden. Das hat i.d.R. keinen Einfluss auf die Funktion, macht die Seite aber schneller. Bedenken sollte man dabei aber das das Cachen auch ein Relaod erschwert. Gerade für die Zeit der Entwicklung einer Seiten absolut unpraktikabel.
    • Nun wieder der Stolperstein, von dem ich oben schon sprach: Unten auf dieser Seite befinden sich 4 Optionsschalter, davon der erste, "Konfiguration sichern" sollte nach meinen Erfahrungen eingeschaltet sein, denn sonst scheint sh404SEF gewisse Einstellungen nicht wirklich wirksam zu übernehmen. Auch erst dann, wenn dieser Schalter gesetzt ist, kommen die Meldungen zu den evtl. nicht vorhandenen Schreibrechten. An dieser Stelle habe ich bei einem Projekt unendlich viel Zeit verbraten. Warum diese Einstellung von Anfang an auf "Aus" gestellt war, ist mir ein Rätsel.
Was nun das Laufen von sh404SEF angeht, waren das die wichtigsten Einstellungen - quasi die, die mitunter über die grundsätzliche Funktion entschieden. An allen weiteren Parametern kann man nach Belieben herumexperimentieren, wenn man sich dazu fit genug fühlt, notwendig schien es mir nie.
Ein Nachtrag sei noch gemacht. Nach Änderungen in der Komponente sollte man bei eingeschaltetem Joomla-Cache diesen leeren, sonst werden diverse Änderunge gar nicht sichtbar und man kommt schnell ins Schwitzen. Der Cache wird geleer über das Backend-Menü "Werkzeuge" > Cache leere und "abgelaufenen Cache leeren". Auch ist es manchmal notwendig den Cache von sh404SEF zu leeren, wenn dieser eingeschalten ist. Das erfolgt über dessen Komponenten-Startseite über die Schaltfläche: "SEF-URLs löschen". Wenn Seiten z.B. 404-Fehlermeldungen geliefert hatten, die man nun behoben hat, ist auch das löschen der 404-Logs über das entspr. Icon sinnvoll.
Die SEF-URLs sollte man außer während der anfänglichen Testphasen sonst nicht löschen. Es sind ja i.d.R. die die bei den Suchverzeichnissen als URLs gelistet sind. Hat man die Einstellungen geändert, ändern sich auch die URLs und die Suchmaschinen greifen ins Leere. Wenn der URL-Umbau notw. war, sollten auch die vorherigen URLs funktionieren in dem man diese eben nicht löscht oder als Eigene Umleitungen hinzufügt.

Wenn SEF Probleme macht

Trotzdem kann es zu Problemen kommen, auch wenn ich behaupten möchte, wenn obiger Leitfaden berücksichtigt wird, dann sollte es nicht passieren.
  1. Zunächst nochmal prüfen, ob der Server alle wichtigen Voraussetzungen mitbringt, die notwendig sind für den sauberen Betrieb von Joomla 1.5.x. Das wird z.B. hier http://help.joomla.org/content/view/1938/302/ veröffentlicht. Wie demgegenüber die eigene Serverkonstellation aussieht kann man einfach erfahren, in dem man im Backend unter dem Menüpunkt "Hilfe" > "Systeminfo" sich die jeweiligen umfangreichen Infos anschaut.
  2. Dann ist wichtig, zu testen ob der bevorzugte mod_rewrite-Modus unterstützt wird. Hierfür gibt es einen einfach Trick. fügen Sie in Ihre .htaccess-Datei ziemlich weit oben folgende Zeile ein: RewriteRule (.*) http://www.google.com/ [R=301,L] Es ist dann ganz einfach so, dass wenn die .htaccess richtig von Joomla verarbeitet wird, bei jedweder URL unter Ihrer Domain, die Sie eingeben die Seite sofort weiterspringt auf Google - also ein klassische 303-Redirekt. Sollte das nicht funktionieren müssen Sie entweder auf die beiden o.g. Modi ausweichen, oder mit Ihrem Provider in Kontakt treten, dann an dieser Stelle muss der Server entspr. konfiguriert werden. Mitunter wird er Ihnen dann auch Möglichkeiten mitteilen, wie diese notwendigen Anpassung selbst vornehmen können. Wenn Sie selbst die Hoheit auf Ihrem Rechner haben, können Sie natürlich auch selbst den Apachen für mod_rewrite umstellen. Dazu müssen Sie eine Datei httpd.conf suchen und in Ihr die Zeile
    LoadModule rewrite_module modules/mod_rewrite.s

    rekommentieren.

  3. Gelesen habe ich auch von etwaigen Problemen bei der Umstellung von php4 auf php5. Auch dazu gibt es vom Provider entspr. Hinweise, die serverabhängig sind und wo Einträge entweder in die .htaccess oder in eine php.ini oder wie auch genannte Datei eingepflegt werden müssen. Diese könnten z.B: so aussehen:
    denkbare Eintragungen in die .htaccess
    Action application/x-httpd-php /cgi-sys/php-fcgi-starter.fcgi
    AddType application/x-httpd-php .php3 .php4
    Action application/x-httpd-php5 /cgi-sys/php5-fcgi-starter.fcgi
    AddType application/x-httpd-php5 .php .php3 .php4 .php5

    AddHandler application/x-httpd-php52 .php .php5 .php4 .php3

    AddType x-mapp-php5 .php
    AddHandler x-mapp-php5 .php

    AddType php5-cgi .php
    AddHandler php5-cgi .php
  4. Schließlich gibt es noch die Möglichkeit mit folgenden zwei Zeilen in der .htaccess zu experimentieren. Zum einen die Zeile #Options +FollowSymLinks. Hier kann das auskommentierende Doppelkreuz entfernt werden. Wer sein Joomla in einem Unterverzeichnis vom www-Root-Verzeichnis betreibt also z.b. www.domain.de/joomla/, der sollte die Zeile # RewriteBase / z.B. ändern in RewriteBase /joomla
Ich hoffe das diese Zusammenstellung meiner mit SEF unter Joomla gemachten Erfahrungen dem einen oder anderen helfen konnte und freue mich auf jedes Feedback.