Pathauto: Vorsicht bei der Generierung automatischer Aliase!

Suchmaschinenfreundliche URLs sind für Drupal kein Problem. Allerdings ist das Core-Modul Path doch eher unkomfortabel und daher wird man wohl immer Pathauto und Token dazunehmen. Im Zusammenspiel können so sehr schöne lesbare URLs erzeugt werden und das vollautomatisch beim Anlegen einer Node. Pathauto gestattet dabei z.B. die Verwendung von Taxonomiebegriffen und unterschiedliche Pfade für verschiedene Inhaltstypen. Und genau hier lauert eine Falle.

Wird der URL-Alias so generiert, dass er ein vorhandenes Unterverzeichnis im Root-Verzeichnis des Webspace enthält, so versucht der Webserver aus diesem Verzeichnis die Inhalte auszuliefern anstatt die Node abzurufen, die sich hinter dem Alias verbirgt. Insbesondere wenn man Taxonomie-Begriffe oder den Inhaltstyp für die Generierung der Aliase verwendet, sollte man darauf achten, dass diese entweder nicht zu Beginn des Pfades eingesetzt werden oder dass auf keinen Fall ein gültiges Unterverzeichnis als Taxonomiebegriff verwendet wird. Sicherer ist natürlich der erste Weg. Vor allem wenn mehrere User die Berechtigung haben neue Taxonomiebegriffe zu erzeugen, kann es passieren, dass aus Unkenntnis ein Verzeichnisname gewählt wird. Das ist kürzlich erst bei einer Kundenwebsite passiert. Dort war schon seit längerer Zeit Drupal im Einsatz. Nun sollte ein weiteres Drupal in eine Subdomain projekte.kundendomain.de (die auf das Unterverzeichnis projekte im Root-Verzeichnis zeigte) installiert werden. Soweit kein Problem und alles lief einwandfrei. Bis auf der bereits vorhandenen Drupal-Installation Inhalte mit dem URL-Alias projekte/[title] hinzukamen. Diese wurden auch ordnungsgemäß erzeugt, aber sobald eine URL wie kundendomain.de/projekte/musterprojekt aufgerufen werden sollte, leitete der Apache diesen Zugriff auf das Verzeichnis der neuen Subdomain um und statt der gewünschten Seite erkam die Fehlermeldung "Seite nicht gefunden". Das Problem ist zwar leicht zu beheben, indem man entweder das Ersetzungsmuster für den URL-Alias oder das Verzeichnis der Subdomain ändert, aber besser ist es man beugt dem ganzen vor und verwendet sicherere Ersetzungsmuster, wie im folgenden Beispiel:

Fehleranfälliges Muster: [termpath]/[title]

Besser: inhalte/[termpath]/[title]

Der feststehende Begriff "inhalte" sorgt hier dafür, dass auch dann eindeutige und richtige Pfade generiert werden, wenn einem der verwendeten Vokabulare versehentlich ein Begriff hinzugefügt wird, der ein vorhandenes Verzeichnis bezeichnet. Das gleiche gilt natürlich auch, wenn man z.B. einen Pfad hat, der den Inhaltstyp enthält. Hier sollte man ebenfalls einen festen Begriff zu Beginn des Ersetzungmusters verwenden.

Trackback URL for this post:

http://tederion.de/trackback/93