Was wäre, wenn dein Webserver nur noch auf die Dateien zugreifen könnte, die Besucher tatsächlich benötigen? Genau diese Idee steckt hinter dem Public-Ordner in Joomla. Die Technik kann deine Website besser vor unbeabsichtigtem Dateizugriff schützen. Doch was bedeutet das konkret, welche Voraussetzungen muss dein Hosting erfüllen und wie richtest du die Funktion richtig ein?
Was ist der Public-Ordner in Joomla?
Wenn du Joomla ganz klassisch installierst, befinden sich zahlreiche Dateien und Verzeichnisse innerhalb des sogenannten Document Roots. Das ist der Ordner, aus dem dein Webserver die Website bereitstellt.
Neben öffentlich benötigten Bildern, Stylesheets und JavaScript-Dateien liegen dort normalerweise auch PHP-Dateien, Bibliotheken, Erweiterungen und die zentrale Konfigurationsdatei.
Diese Dateien sollten zwar durch entsprechende Sicherheitsmechanismen geschützt sein, befinden sich aber grundsätzlich innerhalb des vom Webserver erreichbaren Verzeichnisbaums.
Bei einer Installation mit Public-Ordner sieht das anders aus.
Der Public-Ordner wird zum einzigen vorgesehenen Einstiegspunkt für öffentliche Webanfragen. Der eigentliche Joomla-Programmcode befindet sich außerhalb dieses Verzeichnisses.
Der Browser kann weiterhin deine Website anzeigen. Joomla selbst kann auch weiterhin auf seine benötigten Dateien zugreifen. Besucher können jedoch nicht mehr ohne Weiteres über eine gewöhnliche URL auf den außerhalb liegenden Programmcode zugreifen.
Das Prinzip ist nicht neu. Viele moderne Webanwendungen und Frameworks, beispielsweise Laravel, arbeiten ebenfalls mit einem separaten öffentlichen Verzeichnis.
Für Joomla wurde die entsprechende Möglichkeit mit Version 5.0 eingeführt.
Warum kann ein Public-Ordner die Sicherheit verbessern?
Stell dir deine Website wie ein Bürogebäude vor.
Besucher sollen den Empfangsbereich betreten können. Sie benötigen aber keinen direkten Zugang zum Archiv, zur Buchhaltung oder zum Technikraum.
Bei der klassischen Joomla-Struktur liegen diese Bereiche bildlich gesprochen innerhalb desselben Gebäudeteils. Türen und Zugangsbeschränkungen schützen sie vor unerwünschtem Zugriff.
Der Public-Ordner schafft eine zusätzliche räumliche Trennung.
Der Webserver liefert nur Dateien aus dem öffentlichen Verzeichnis aus. Große Teile des eigentlichen Joomla-Codes befinden sich außerhalb davon.
1. Weniger direkt erreichbare Dateien
Verzeichnisse wie libraries, plugins oder Teile der internen Verwaltung müssen nicht vollständig über den öffentlichen Verzeichnisbaum bereitgestellt werden.
Dadurch sinkt das Risiko, dass eine fehlerhafte Serverkonfiguration sensible Dateien unbeabsichtigt direkt ausliefert.
2. Zusätzlicher Schutz für Konfigurationsdateien
Die Joomla-Datei configuration.php enthält unter anderem technische Einstellungen und Datenbank-Zugangsinformationen.
Wird sie außerhalb des Document Roots gespeichert, kann der Webserver sie bei korrekter Konfiguration nicht als gewöhnliche Datei aus dem öffentlichen Verzeichnis ausliefern.
3. Klare Trennung zwischen Webinhalten und Anwendungscode
Bilder, öffentliche Medien und benötigte Einstiegspunkte lassen sich deutlicher vom internen Programmcode unterscheiden.
Das kann die Sicherheitsarchitektur übersichtlicher machen und hilft insbesondere bei professionell betreuten Webanwendungen.
Wichtig: Ein Public-Ordner verhindert keine Sicherheitslücken in PHP-Code. Eine unsichere Erweiterung kann beispielsweise weiterhin Daten verändern oder unberechtigt auf Informationen zugreifen.
Der Public-Ordner ist deshalb eine zusätzliche Schutzschicht, kein Ersatz für Updates, Zugriffskontrollen oder sichere Programmierung.
Weitere Grundlagen dazu findest du unter Joomla Sicherheit.
Wie verändert sich die Verzeichnisstruktur?
Eine klassische Joomla-Installation enthält ihre wesentlichen Verzeichnisse unmittelbar im Webverzeichnis.
Bei einer Public-Ordner-Installation wird zwischen dem eigentlichen Joomla-Verzeichnis und dem öffentlich ausgelieferten Bereich unterschieden.
Ein vereinfachtes Beispiel:
/var/www/meine-website/
|
|-- administrator/
|-- api/
|-- cli/
|-- components/
|-- includes/
|-- libraries/
|-- plugins/
|-- templates/
|-- media/
|-- images/
|-- configuration.php
|
`-- public/
|-- index.php
|-- defines.php
|-- administrator/
| `-- index.php
|-- api/
| `-- index.php
|-- media/
`-- images/
Die eigentlichen Joomla-Dateien verbleiben außerhalb des öffentlichen Ordners. Joomla erzeugt dort die benötigten Einstiegspunkte und Verknüpfungen zu öffentlichen Ressourcen.
Einige dieser Verknüpfungen sind sogenannte symbolische Links, häufig auch Symlinks genannt.
Ein Symlink ist vereinfacht gesagt ein Verweis auf eine Datei oder ein Verzeichnis an einer anderen Stelle des Servers.
Besonders wichtig: Die Verzeichnisse media und images im Public-Bereich sind in diesem Beispiel keine unabhängigen Kopien. Sie verweisen auf die tatsächlich gespeicherten Dateien.
Welche Voraussetzungen müssen erfüllt sein?
Bevor du eine Joomla-Installation umstellst, solltest du zunächst dein Hosting prüfen.
Nicht jeder Webhosting-Tarif unterstützt diese Art der Verzeichnisstruktur.
- Joomla 5 oder 6: Die Public-Ordner-Funktion ist seit Joomla 5 verfügbar.
- Passende Serverumgebung: Für Joomla 6 wird PHP 8.3 oder neuer benötigt. PHP 8.4 ist eine sinnvolle Wahl, sofern alle Erweiterungen kompatibel sind.
- Anpassbares Document Root: Die Domain muss auf den gewünschten öffentlichen Ordner zeigen können.
- Symbolische Links: Dein Hosting muss das Erstellen und Verwenden der benötigten Symlinks unterstützen.
- CLI-Zugriff: Für die offizielle Einrichtung benötigst du die Joomla-Kommandozeile.
- Dateisystemberechtigungen: PHP und Webserver müssen die erforderlichen Verzeichnisse lesen beziehungsweise beschreiben können.
- Kompatible Erweiterungen: Templates und Erweiterungen dürfen nicht voraussetzen, dass alle Dateien unmittelbar im öffentlichen Webverzeichnis liegen.
Ein weiterer Punkt wird häufig übersehen: Joomla erwartet bei dieser Betriebsart, dass öffentlich verwendete Medienverzeichnisse keine ausführbaren PHP-Dateien benötigen. Auch die verwendete Template-Struktur muss mit dem Konzept kompatibel sein.
Für eine neue Joomla-Installation lässt sich das meist leichter berücksichtigen als für eine über Jahre gewachsene Website.
Unterstützt mein Hoster den Joomla Public-Ordner?
Das ist vermutlich die wichtigste Frage vor der eigentlichen Einrichtung.
Viele Hostinganbieter erlauben die Anpassung des Zielverzeichnisses einer Domain. Das allein bedeutet aber noch nicht, dass die gesamte Joomla-Public-Ordner-Funktion unterstützt wird.
Schritt 1: Prüfe die Domainverwaltung
Melde dich im Kundenbereich deines Hostinganbieters an.
Suche nach Einstellungen mit Bezeichnungen wie Document Root, Webroot, Domain-Zielverzeichnis, Stammverzeichnis oder Website-Verzeichnis.
Dort sollte sich festlegen lassen, aus welchem Ordner deine Domain ihre Dateien ausliefert.
Bei einer Beispielinstallation könnte das Zielverzeichnis lauten:
/var/www/meine-website/public
Wichtig ist, dass die Domain direkt auf diesen Ordner zeigt. Sie sollte nicht erst über eine zusätzliche URL wie meine-domain.de/public erreichbar sein.
Schritt 2: Prüfe SSH und PHP-CLI
SSH ermöglicht dir, eine Verbindung zur Kommandozeile des Servers herzustellen.
Damit kannst du Verwaltungsbefehle ausführen, ohne dich durch ein grafisches Kontrollpanel klicken zu müssen.
Nach dem Login kannst du beispielsweise prüfen, ob PHP verfügbar ist:
php -v
Bei Joomla 6 sollte die PHP-Version mindestens 8.3 betragen.
Beachte, dass manche Hoster unterschiedliche PHP-Versionen für den Webserver und die Kommandozeile verwenden.
Schritt 3: Prüfe symbolische Links
Für die automatische Generierung des Public-Ordners benötigt Joomla die Möglichkeit, symbolische Links zu erstellen.
Einige Shared-Hosting-Anbieter schränken diese Funktion aus Sicherheitsgründen ein.
Frage deshalb ausdrücklich, ob die PHP-Funktion symlink() im Hostingtarif verfügbar ist und ob der Webserver den erzeugten Verknüpfungen folgen darf.
Schritt 4: Frage deinen Hoster direkt
Falls du unsicher bist, kannst du diese Anfrage verwenden:
Ich möchte eine Joomla-6-Website mit einem separaten Public-Verzeichnis betreiben. Unterstützt mein Hostingtarif ein individuell einstellbares Document Root, die Ausführung der Joomla-CLI per SSH und die Erstellung symbolischer Links über PHP (symlink())? Außerdem müsste PHP auf Dateien außerhalb des öffentlichen Document Roots zugreifen können. Ist diese Konfiguration in meinem Tarif möglich?
Mit diesen Angaben kann der technische Support deutlich gezielter antworten als auf die allgemeine Frage, ob Joomla unterstützt wird.
Joomla mit Public-Ordner neu installieren: Schritt für Schritt
Am einfachsten ist die Einrichtung bei einer vollständig neuen Website.
Die folgende Anleitung verwendet einen Linux-Server mit Apache oder einer vergleichbar konfigurierten Hostingumgebung.
Die angegebenen Verzeichnisse sind Beispiele und müssen zu deinem Server passen.
Schritt 1: Bereite dein Hosting vor
Erstelle zunächst ein Verzeichnis für deine Joomla-Installation:
/var/www/meine-website
Deine zukünftige Domain soll später auf folgendes Verzeichnis zeigen:
/var/www/meine-website/public
Richte außerdem eine Datenbank ein und stelle sicher, dass PHP und die erforderlichen Erweiterungen verfügbar sind.
Schritt 2: Lade Joomla herunter
Lade das vollständige Installationspaket über die offizielle Joomla-Website herunter.
Entpacke das Paket in das vorbereitete Joomla-Verzeichnis.
Wichtig: Die Dateien müssen direkt in diesem Verzeichnis liegen und nicht versehentlich in einem zusätzlichen Unterordner.
Schritt 3: Starte die Installation über die Kommandozeile
Wechsle per SSH in dein Joomla-Verzeichnis:
cd /var/www/meine-website
Joomla besitzt einen eigenen Kommandozeilen-Installer.
Für die Einrichtung mit Public-Ordner wird die Installationsoption --public-folder verwendet.
Ein beispielhafter Installationsbefehl lautet:
php installation/joomla.php install \
--site-name="Meine Joomla Website" \
--admin-user="Website Administrator" \
--admin-username="websiteadmin" \
--admin-email="Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. " \
--db-type="mysqli" \
--db-host="localhost" \
--db-name="meine_joomla_db" \
--db-user="joomla_db_user" \
--db-prefix="jos_" \
--db-encryption="0" \
--public-folder="public"
Wichtig: Dieses Beispiel zeigt die grundlegende Syntax für eine Neuinstallation und ist nicht unmittelbar vollständig ausführbar. Die Administrator- und Datenbankpasswörter fehlen bewusst. Je nach Joomla-Version müssen weitere Angaben ergänzt werden.
Welche Optionen deine konkrete Joomla-Version unterstützt, kannst du mit diesem Befehl prüfen:
php installation/joomla.php install --help
Verwende den Installationsbefehl ausschließlich für eine neue Installation mit einer dafür vorgesehenen Datenbank. Eine bestehende Website darf nicht versehentlich erneut installiert werden.
Schritt 4: Kontrolliere die erzeugten Dateien
Nach erfolgreicher Installation sollte Joomla den Public-Ordner einschließlich seiner benötigten Einstiegspunkte angelegt haben.
Prüfe insbesondere, ob folgende Dateien vorhanden sind:
public/index.php
public/defines.php
public/administrator/index.php
public/api/index.php
Außerdem müssen die benötigten Verknüpfungen zu Medienverzeichnissen vorhanden sein.
Lege die Verzeichnisstruktur nicht einfach durch Kopieren einzelner Dateien nach einem beliebigen Tutorial an. Joomla besitzt dafür eine eigene Funktion, die die erforderlichen Pfade berücksichtigt.
Schritt 5: Stelle das Document Root um
Nun muss der Webserver auf das öffentliche Verzeichnis zeigen.
Bei Apache wird dazu die Einstellung DocumentRoot verwendet.
In einem Hosting-Control-Panel genügt häufig die Änderung des Domain-Zielverzeichnisses.
Bei einem eigenen Server erfolgt die Konfiguration über die jeweilige Virtual-Host-Datei.
Ein vereinfachtes Apache-Beispiel:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/meine-website/public
<Directory /var/www/meine-website/public>
AllowOverride All
Require all granted
Options -Indexes +FollowSymLinks
</Directory>
</VirtualHost>
Dieses Beispiel zeigt nur die grundlegende Verzeichniszuordnung. Für eine produktive Website müssen insbesondere HTTPS, Zertifikate, PHP-Anbindung und weitere Sicherheitsregeln korrekt eingerichtet werden.
Achtung: Die Erstellung des Public-Ordners ändert die Webserver-Konfiguration nicht automatisch.
Solange deine Domain weiterhin auf das ursprüngliche Joomla-Verzeichnis zeigt, ist die gewünschte Trennung nicht wirksam.
Schritt 6: Prüfe die .htaccess und die URLs
Bei Apache übernimmt die .htaccess wichtige Aufgaben, beispielsweise die Weiterleitung suchmaschinenfreundlicher URLs an Joomla.
Falls Joomla eine htaccess.txt bereitgestellt hat, muss die passende Konfiguration im öffentlichen Verzeichnis aktiviert werden.
Teste anschließend:
- die Startseite und mehrere Unterseiten
- den Joomla-Administrationsbereich
- Bilder, CSS- und JavaScript-Dateien
- Kontaktformulare und andere Formulare
- installierte Erweiterungen
- suchmaschinenfreundliche URLs
- die Joomla-Updatefunktion
Wenn Nginx eingesetzt wird, müssen entsprechende Weiterleitungsregeln in der Serverkonfiguration hinterlegt sein, da Nginx keine .htaccess verarbeitet.
Eine bestehende Joomla-Website auf Public-Ordner umstellen
Bei bereits betriebenen Websites solltest du wesentlich vorsichtiger vorgehen.
Eine gewachsene Joomla-Installation enthält häufig Erweiterungen, Templates, benutzerdefinierte Medienpfade und individuell angepasste Verzeichnisstrukturen.
Diese können durch die Umstellung beeinträchtigt werden.
Meine Empfehlung ist deshalb, die Umstellung zunächst vollständig in einer Testumgebung durchzuführen.
Sichere vor Beginn sämtliche Dateien und die Datenbank. Überprüfe anschließend, ob sich das Backup wirklich wiederherstellen lässt.
Erst danach solltest du die Joomla-Dateien in ein nicht öffentlich ausgeliefertes Verzeichnis überführen.
Joomla stellt für bereits installierte Websites folgenden Konsolenbefehl bereit:
php cli/joomla.php site:create-public-folder \
--public-folder=public
Dieser Befehl wird aus dem eigentlichen Joomla-Hauptverzeichnis ausgeführt. Das angegebene öffentliche Verzeichnis muss für die Generierung geeignet sein und darf insbesondere keine bestehende index.php enthalten.
Das bedeutet: Du kannst den Befehl nicht einfach in einem bisher produktiv verwendeten Webroot ausführen und erwarten, dass Joomla alle vorhandenen Dateien automatisch sicher umsortiert.
Zuerst muss die Zielstruktur vorbereitet werden. Anschließend werden der Public-Ordner erzeugt, die Domain umgestellt und sämtliche Funktionen getestet.
Lies dazu auch die Informationen über Joomla Migration und Modernisierung.
Welche Probleme können auftreten?
In der Praxis gibt es einige typische Stolperfallen.
Bilder oder Layouts fehlen
Häufig funktionieren symbolische Links nicht, oder bestimmte Medienverzeichnisse wurden nicht berücksichtigt.
Fehler 404
Die Webserver-Weiterleitungen stimmen möglicherweise nicht. Besonders bei sprechenden URLs und API-Endpunkten solltest du die Konfiguration prüfen.
Fehler 500
Ursache können fehlende Dateiberechtigungen, inkompatible Erweiterungen oder nicht unterstützte Serveranweisungen sein.
Updates schlagen fehl
Die Joomla-Updatefunktion benötigt bestimmte Dateien und Verknüpfungen. Fehlen diese im öffentlichen Verzeichnis, kann die Aktualisierung scheitern.
Erweiterungen funktionieren nicht
Manche Erweiterungen verwenden feste Dateipfade oder erwarten bestimmte Dateien direkt im Webroot.
Insbesondere bei individuell entwickelten Komponenten ist es sinnvoll, mit den offiziellen Joomla-Pfadkonstanten wie JPATH_ROOT und JPATH_PUBLIC zu arbeiten.
Mehr über saubere Erweiterungsarchitekturen findest du im Bereich Joomla-Entwicklung.
Wie überprüfst du die Sicherheit nach der Einrichtung?
Nach der Einrichtung solltest du nicht nur kontrollieren, ob deine Website funktioniert. Genauso wichtig ist die Frage, ob der Webserver tatsächlich ausschließlich das vorgesehene öffentliche Verzeichnis ausliefert.
Rufe beispielsweise folgende Adressen im Browser auf:
https://example.com/– die Joomla-Startseite sollte erscheinen.https://example.com/administrator/– der Administrationsbereich sollte erreichbar sein.https://example.com/configuration.php– es dürfen keine Dateiinhalte oder Zugangsdaten angezeigt werden.https://example.com/libraries/– interne Programmdateien dürfen nicht als öffentliches Verzeichnis zugänglich sein.https://example.com/media/– benötigte öffentliche Medien müssen weiterhin geladen werden.https://example.com/public/– es darf keine zweite öffentlich nutzbare Joomla-Installation entstehen.
Ein einzelner HTTP-Statuscode beweist noch nicht, dass deine Installation vollständig geschützt ist.
Entscheidend ist, ob das Document Root korrekt gesetzt wurde und keine andere Domain, Subdomain oder Alias-Konfiguration Zugriff auf den internen Joomla-Code ermöglicht.
Denke außerdem an deine Datensicherungen. Ein Backup, das ausschließlich den Public-Ordner erfasst, ist nicht ausreichend. Auch der eigentliche Joomla-Code, sämtliche Medien und die Datenbank müssen gesichert werden.
Ist der Public-Ordner für jede Joomla-Website sinnvoll?
Nicht unbedingt.
Für eine größere, professionell betreute Joomla-Website kann die Trennung von öffentlichem Verzeichnis und internem Anwendungscode eine sinnvolle zusätzliche Sicherheitsmaßnahme sein.
Das gilt besonders dann, wenn du die Serverumgebung selbst kontrollierst und alle Erweiterungen auf Kompatibilität geprüft hast.
Bei einfachen Websites auf eingeschränktem Shared Hosting kann die zusätzliche Komplexität allerdings größer sein als der praktische Nutzen.
Ein sorgfältig konfigurierter Webserver kann auch bei einer klassischen Joomla-Installation den direkten Zugriff auf sensible Dateien wirksam einschränken.
Der Public-Ordner bietet deshalb nicht automatisch ein grundsätzlich höheres Sicherheitsniveau. Er verändert vor allem die Architektur und reduziert bestimmte Risiken durch versehentlich öffentlich erreichbare Dateien.
Bei jedem Ansatz bleiben regelmäßige Updates, sichere Zugangsdaten, geprüfte Erweiterungen und funktionierende Backups unverzichtbar.
Fazit: Eine sinnvolle zusätzliche Schutzschicht – wenn die Voraussetzungen stimmen
Der Public-Ordner ist eine interessante Möglichkeit, eine Joomla-Website klarer und sicherheitsbewusster aufzubauen.
Vor allem die Trennung zwischen öffentlich benötigten Dateien und internem Anwendungscode ist ein überzeugender architektonischer Ansatz.
Allerdings solltest du die Funktion nicht überstürzt aktivieren.
Prüfe zuerst, ob dein Hosting die technischen Voraussetzungen erfüllt. Teste anschließend sämtliche Erweiterungen und stelle sicher, dass Backups, Updates und die Wiederherstellung weiterhin funktionieren.
Eine gut konfigurierte klassische Joomla-Installation ist besser als eine fehlerhaft eingerichtete Public-Ordner-Struktur.
Wenn du die Umstellung planst oder unsicher bist, ob deine Joomla-Installation dafür geeignet ist, lohnt sich eine technische Prüfung.
Weitere Informationen findest du im Bereich Joomla Sicherheit auf jentschel.com.
Weiterführende Informationen
Wenn du dich intensiver mit dem Thema beschäftigen möchtest, findest du in der offiziellen Joomla-Dokumentation weiterführende technische Informationen: