URLs wie www.deine-domain.de/index.php/artikel/12-titel sind hässlich, blähen die Pfadlänge auf und schaden dem Vertrauen in Klick-Ergebnissen bei Google. Joomla bringt zwei Standardmechanismen mit, die das saubere URLs aktivieren - du brauchst weder ein Plugin noch eine andere PHP-Konfiguration. Funktioniert in Joomla 3, 4 und 5 identisch, nur die Menüpunkte heißen leicht anders.
Drei Schritte: SEF-URLs im Backend einschalten, die mitgelieferte htaccess.txt zur .htaccess umbenennen und für übriggebliebene /index.php/-Reste eine 301-Weiterleitung setzen.
mod_rewrite (bei allen großen Hostern Standard) und FTP- oder SSH-Zugriff auf das Joomla-Verzeichnis. Außerdem ein Backup, bevor du die .htaccess aktivierst - falsche Regeln können den Login aussperren.
Schritt 1: SEF-URLs in den Joomla-Einstellungen aktivieren
Im Backend von Joomla unter System › Konfiguration (Joomla 4 und 5) bzw. System › Konfiguration › SEO (Joomla 3) findest du die SEO-Optionen. Drei Schalter sind relevant:
- Suchmaschinenfreundliche URLs: JA. Damit baut Joomla menschenlesbare Slugs aus den Titeln, also
/blog/artikel-titelstatt/index.php?option=com_content&view=article&id=12. - URL-Rewrite verwenden: JA. Erst dieser Schalter blendet das
index.phpaus dem Pfad, sodass/index.php/blog/artikel-titelzu/blog/artikel-titelwird. Setzt die nächste Stufe (.htaccess) voraus, sonst gibt es 404-Fehler. - URL-Suffix hinzufügen: NEIN. Das wäre die alte Variante mit
.htmlam Ende. Heute Pflichtwahl: ohne Suffix.
Nach dem Speichern werden alle internen Joomla-Links umgeschrieben. Test im Frontend: Wenn die Adresse jetzt noch /index.php/ enthält, fehlt der zweite Schritt.

Schritt 2: htaccess.txt zur .htaccess umbenennen
Joomla liefert eine vorgefertigte htaccess.txt im Root-Verzeichnis aus. Apache aktiviert .htaccess-Dateien nur, wenn sie tatsächlich mit einem Punkt beginnen - deshalb ist die Default-Datei deaktiviert versteckt. Umbenennen aktiviert sie:
- Per FTP (FileZilla, WinSCP) oder SSH ins Joomla-Root verbinden (meist
/httpdocs/oder/public_html/). - Datei
htaccess.txtmarkieren. - Umbenennen zu
.htaccess(mit Punkt am Anfang, ohne Endung). - Falls dein FTP-Client versteckte Dateien ausblendet: in den Einstellungen "Verborgene Dateien anzeigen" aktivieren - sonst siehst du die umbenannte Datei nicht mehr.

Nach dem Umbenennen lädst du die Startseite und ein paar Unterseiten neu. Wenn alles funktioniert, sind die index.php-Anteile aus den Pfaden verschwunden und du landest auf den Inhalten wie gewohnt. Treten 500er-Fehler oder Endlosschleifen auf, ist Apache-mod_rewrite nicht aktiviert - dann beim Hoster nachfragen.
Schritt 3: alte /index.php-URLs per 301 umleiten
In Schritt 1 und 2 sind alle internen Verweise sauber. Aber Suchmaschinen, externe Backlinks und Bookmarks zeigen oft noch auf Adressen mit /index.php/. Damit diese Aufrufer nicht ins Leere greifen, leitest du sie per 301 auf den sauberen Pfad weiter.
Öffne deine frisch aktivierte .htaccess mit einem Editor wie Notepad++ oder VS Code (Word und ähnliche Office-Programme nicht verwenden - die zerschießen Zeilenenden und Encoding). Direkt nach der Zeile RewriteEngine On diese beiden Zeilen einfügen:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/index\.php/(.*)\sHTTP [NC]
RewriteRule ^index\.php/(.*)$ /$1 [R=301,L]
Was die Regel macht: Sobald jemand eine URL mit /index.php/... aufruft, baut Apache daraus die Variante ohne /index.php/ und schickt dem Browser einen permanenten Redirect (Status 301). Suchmaschinen tauschen den alten Eintrag im Index dadurch über die Zeit gegen den neuen aus.
THE_REQUEST-Bedingung wichtig ist: Ohne sie würde Apache auch interne Rewrites bemerken, bei denen Joomla die Anfrage selbst auf /index.php/... umsetzt. Das führt zu Endlosschleifen. Die Variable THE_REQUEST enthält nur die ursprüngliche Browser-Anfrage und ignoriert interne Umschreibungen - so wird ausschließlich der echte externe Aufruf umgeleitet.
Speichern, hochladen, testen: https://deine-domain.de/index.php/blog/artikel-titel aufrufen - sollte automatisch zu https://deine-domain.de/blog/artikel-titel springen.
Site-Abfrage bei Google: was ist noch im Index?
Um zu prüfen, welche alten URLs Google noch kennt, machst du eine sogenannte Site-Abfrage. In der Google-Suche eingeben:
site:deine-domain.de inurl:index.php
Du bekommst eine Liste aller URLs mit index.php im Pfad, die im Google-Index stehen. Klick eine an: Wenn der Browser sauber auf die Variante ohne /index.php/ umleitet, ist alles richtig. Bleibt /index.php/ in der Adressleiste stehen, greift deine .htaccess-Regel nicht - prüfe Tippfehler in der Rewrite-Bedingung.
Außerdem in der Google Search Console nachsehen: Im Bereich "Seiten" zeigt Google dir indexierte URLs samt Status. Nach ein paar Wochen sollten die /index.php/-Versionen auf "Weitergeleitete URL" wechseln - Google folgt dann dem 301 zum neuen Ziel.
Sitemap und interne Links nachziehen
Wenn du eine sitemap.xml manuell pflegst oder ein altes Plugin nutzt, prüfe: stehen dort noch die alten Pfade mit /index.php/? Falls ja, neu generieren lassen oder von Hand korrigieren - sonst meldest du Google immer wieder veraltete URLs.
Joomlas Standard-Sitemap-Komponenten wie OSMap oder JSitemap bauen automatisch die SEF-Variante. Bei selbstgebauten XML-Dateien lohnt der manuelle Check.
Auch interne Links in Artikel-Inhalten (etwa hardcodierte <a href="/index.php?option=...">) solltest du auf die neue saubere Variante ändern. Jede zusätzliche Umleitung kostet Ladezeit und ist unnötig, wenn du den Link direkt auf das Ziel setzen kannst.
Was tun, wenn nach der Umstellung etwas kaputt geht?
Drei klassische Fehlerbilder und ihre Lösung:
- 500 Internal Server Error nach .htaccess-Aktivierung: Apache-mod_rewrite ist nicht aktiv. Beim Hoster anfragen oder im Hosting-Panel das Apache-Modul nachträglich einschalten.
- Endlosschleife oder ERR_TOO_MANY_REDIRECTS: Die Rewrite-Regel greift auch bei internen Umschreibungen. Die
THE_REQUEST-Bedingung aus Schritt 3 muss zwingend vorne stehen. - Frontend lädt, aber Admin-Login schlägt fehl: Das passiert, wenn der Hoster
/administrator/aus dem Rewrite ausklammern muss. Joomlas Default-htaccess macht das schon, aber bei eigenen Anpassungen prüfe, ob deine RewriteRule nicht/administrator/umleitet. Ergänzung am Anfang der Regelliste:RewriteCond %{REQUEST_URI} !^/administrator.
Falls gar nichts mehr geht: .htaccess wieder zur htaccess.txt zurückbenennen. Joomla läuft dann mit /index.php/...-URLs weiter - du verlierst nur die schönen Pfade, nicht die Seite.
Joomla 4 und 5 - was hat sich geändert?
Funktional läuft das SEF-System in den aktuellen Versionen identisch. Optisch hat sich der Admin-Bereich geändert: Die Konfiguration heißt jetzt im Backend "System › Konfiguration" und die SEO-Optionen findest du im Tab SEO. Die drei Schalter (Suchmaschinenfreundliche URLs, URL-Rewrite, URL-Suffix) gibt es weiterhin, mit identischen Beschriftungen.
Joomla 5 (seit Oktober 2023 stabil) hat zusätzlich ein paar Performance-Optimierungen und das Standard-Template "Cassiopeia" als Basis. Für die .htaccess-Logik macht das keinen Unterschied - die mitgelieferte htaccess.txt ist in allen drei Versionen kompatibel.
nginx.conf oder eine Server-Block-Datei. Joomla bringt für nginx eine Vorlage namens nginx.conf.txt im Root mit - der Hoster trägt deren Inhalt in die Server-Konfiguration ein.
FAQ - häufige Fragen zur Joomla-URL-Umstellung
Verliere ich durch die Umstellung Google-Rankings?
Kurzfristig kann es Schwankungen geben, mittelfristig hilft die Aufräumaktion deinem Ranking. Wichtig: durch die 301-Weiterleitung übergibt Google den Link-Wert (PageRank, Backlinks) auf die neue saubere URL. Crawler haben durchschnittlich vier bis zwölf Wochen, bis sie alle alten Einträge im Index ausgetauscht haben.
Brauche ich Joomla-Plugins wie sh404SEF noch?
Nein. Die Joomla-eigenen SEF-Einstellungen reichen für die meisten Seiten aus. sh404SEF und ähnliche Erweiterungen bieten zusätzliche Features wie individuelle URL-Patterns oder Tag-basierte Slugs, sind aber für das Entfernen von /index.php/ nicht nötig.
Was passiert mit alten Bookmarks und externen Links?
Die werden durch die Rewrite-Regel in Schritt 3 automatisch per 301 auf die saubere URL weitergeleitet. Nutzer landen auf dem richtigen Inhalt, ohne dass du irgendwo manuell eingreifen musst.
Kann ich die Umstellung rückgängig machen?
Ja, jederzeit. .htaccess wieder zur htaccess.txt umbenennen oder im Backend die Schalter zurückstellen. Die Inhalte bleiben unangetastet, nur die Pfade ändern sich.
Funktioniert das bei einer Joomla-Multisite?
Bei klassischen Joomla-Installationen unter Unterverzeichnissen funktioniert es ohne Anpassung. Bei echten Multisites mit gemeinsamer Datenbank brauchst du je nach Setup eine Anpassung der RewriteBase-Direktive in der .htaccess. Schau im Joomla-Forum nach deiner konkreten Konstellation.
Wirkt sich die Umstellung auf die Ladezeit aus?
Praktisch nicht. Apache verarbeitet Rewrite-Regeln in Millisekunden, dazu kommt einmalig ein 301-Round-Trip für alte URLs. Die SEO-Vorteile sauberer Pfade wiegen den minimalen Overhead bei weitem auf.
Was, wenn ich keinen FTP-Zugang habe?
Manche Hoster bieten einen Datei-Manager direkt im Hosting-Panel an. Damit lässt sich die Datei online umbenennen. Alternativ über SSH per mv htaccess.txt .htaccess. Falls keiner dieser Wege geht, beim Support des Hosters das Umbenennen anfragen.
Quellen und weiterführende Links
- Joomla-Dokumentation: Search Engine Friendly URLs - offizielle Anleitung für Joomla 4
- Apache-Dokumentation: mod_rewrite - technische Referenz zu RewriteCond und RewriteRule
- .htaccess-Grundlagen und Beispiele - umfassender Überblick zu .htaccess auf redirect301.de
- 301-Weiterleitungen und SEO - warum 301 statt 302 für Umzüge
- PHP-Variante des 301-Redirects - Alternative ohne mod_rewrite
Kommentararchiv 2