Kategoriebasierte Permalinks und „/category/“ aus Post-URL entfernen
WordPress-Permalinks
WordPress bietet die Möglichkeit, sprechende URLs aus Kategorie- und Beitragsnamen zu erzeugen. Die Struktur der Permalink-URLs für Blog-Artikel lässt sich im Backend auch sehr gut einstellen, zum Beispiel basierend auf Datum und Beitragstitel. Hier lässt sich sehr schön eine zeitliche Hierarchie einrichten, wie hier dargestellt:
- http://example.com/2008/06/23/mein-erster-beitrag/ - Mein erster Beitrag (23.06.2008)
- http://example.com/2008/06/23/ - Tagesarchiv: alle Artikel vom 23.06.2008
- http://example.com/2008/06/ - Monatsarchiv: alle Artikel vom Juni 2008
- http://example.com/2008/ - Jahresarchiv: alle Artikel des Jahres 2008
Für persönliche Blogs oder Blogs ohne tiefere Struktur sind diese Permalinks sicher sehr gut, zumal man hier sofort das Datum des Artikels sieht.
Kategoriebasierte Permalinks
Leider ist diese Struktur nicht für jede WordPress-Website geeignet. Viele WordPress-Nutzer wollen ihre Website klar strukturieren, zum Beispiel mittels Kategorien und Unterkategorien. Hierzu kann man zum Beispiel folgende benutzerdefinierte Permalink-Struktur für die Blogartikel einstellen:
/%category%/%postname%
Hier werden die Permalinks für Blogartikel zum Beispiel so generiert:
- http://example.com/meine-hauptkategorie/mein-erster-beitrag/
Auch Kategoriehierarchien mittels Ober- und Unterkategorien ist so möglich und sieht dann zum Beispiel so aus:
- http://example.com/meine-hauptkategorie/meine-unterkategorie/mein-erster-beitrag/
Nachteile und Probleme kategoriebasierter Permalinks
Leider funktioniert hier aber die URL-Hierarchie wie bei den datumsbasierten Permalinks nicht mehr, ein Link auf:
- http://example.com/meine-hauptkategorie/
würde ins Leere führen. Standardmäßig wird Kategorie-URLs ein „/category/ vorangesetzt:
Abgesehen davon, dass dies für deutschsprachige Seiten unschön aussieht, wird so auch die URL so unnötig verlängert und es wird ein Element eingefügt, welches in den Artikel-URLs nicht mehr vorhanden ist. Die URL-Struktur der Seite wird also inkonsistent.
Abhilfe: die Permalink-Option „Kategorie-Basis“
Hier kommt jetzt die Permalink-Option „Kategorie-Basis“ ins Spiel. Hier kann man eine eigene URL-Basis für die Kategorie-URLs festlegen. Um das Wort „category“ zum Beispiel einzudeutschen, könnte man hier „/kategorie/“ eintragen. Das ändert aber nichts daran, dass die URL-Struktur inkonsistent wird. Mit einem kleinen Trick kann man aber die Kategoriebasis aus der URL entfernen. Man trägt einfach einen Verweis auf das eigene Verzeichnis ein:
./
Dieser Trick funktioniert, allerdings sind einige Seiteneffekte zu beachten, auf die ich im folgenden kurz eingehen möchte.
Seiteneffekt 1: „./“ in URLs
WordPress generiert die Links im HTML-Quelltext wie folgt:
- http://example.com/./meine-hauptkategorie/
- http://example.com/./meine-hauptkategorie/meine-unterkategorie/
Alle mir bekannten Browser sowie die großen Suchmaschinen interpretieren das „./“ in den Kategorie-URLs korrekt und haben keine Probleme diesen Verweisen zu folgen. Die meisten Browser und Suchmaschinen-Roboter entfernen den (eigentlich überflüssigen) Verweis auf das aktuelle Verzeichnis aus der URL, und zeigen die URL in der Adressleiste, Statuszeile oder in Tooltips ohne das „./“ an:
- http://example.com/meine-hauptkategorie/
- http://example.com/meine-hauptkategorie/meine-unterkategorie/
Lediglich ältere Internet Explorer belassen die URLs wie sie sind. Es handelt sich aber höchstens um einen kleinen Schönheitsfehler, da auch diese Browser problemlos mit diesen Links klar kommen und die gewünschte Kategorie aufrufen.
Seiteneffekt 2: Probleme bei gleichnamigen statischen Seiten
WordPress bietet mit Bordmitteln keine Möglichkeit, die Permalinkstruktur von statischen Seiten (im Sinne von WordPress) zu beeinflussen. WordPress-Seiten haben immer folgende URL-Struktur:
- http://example.com/hauptseite/unterseite/
Wenn man nun eine statische Seite und eine Kategorie hat, die beide den gleichen Titel besitzen, dann hätten beide dieselbe URL:
- http://example.com/mein-toller-titel/ – URL der Seite mit dem Titel „Mein toller Titel“
- http://example.com/./mein-toller-titel/ – URL der Kategorie mit dem Titel „Mein toller Titel“
Da der Punkt „.“ auf das aktuelle Verzeichnis verweist sind beide URLs also äquivalent. Da aber 2 verschiedene Ressourcen (Webseiten) aber nicht dieselbe URL haben können gibt es hier offensichtlich Probleme. Gleichnamige Kategorien und statische Seiten muss man bei der Kategoriebasis „./“ also vermeiden. Es genügt dass der URL-Name (engl. „Post Slug“) unterschiedlich ist, diesen kann man beim Anlegen der Seite bzw. Kategorie bequem ändern.
Seiteneffekt 3: Artikel-Permalinks
Der Trick mit „./“ funktioniert nur, wenn man die Permalinkstruktur der Blogartikel so einstellt, dass sie mit /%category%/ beginnen, und zusätzlich die Artikel-ID mittels %post_id% enthalten. Eine funktionierende Permalinkstruktur für Artikel wäre also z.B. die folgende:
/%category%/%post_id%-%postname%
Eine Permalinkstruktur, die die Artikel-ID enthält hat aber den Nachteil, dass sämtliche URLs, die die ID enthalten, auf den Artikel mit dieser ID verweisen. Es droht unter Umständen doppelter Inhalt (engl. „duplicate content“, „DC“). Ein Beispiel für die oben genannte Permalinkstruktur:
- http://example.com/meine-kategorie/123-mein-toller-titel/
- http://example.com/meine-kategorie/123-mein-titel/
- http://example.com/meine-kategorie/123-mein-toller/
- http://example.com/meine-kategorie/123-mei…tel/
Diese URLs verweisen alle auf den selben Artikel. Auftreten kann das Problem, wenn jemand mit einer falschen, aber nach der o.g. Permalinkstruktur formal gültigen URL auf den Artikel verlinkt. Allerdings unterstützt WP ab Version 2.3 kanonische URLs und leitet „falsche“ Artikel-URLs auf den korrekten URL weiter. In der Praxis sollte dieses Problem daher keine Rolle spielen.
Abschließend möchte ich noch auf einen Thread im Forum hinweisen, der diese Problematik zum Thema hat: http://forum.wordpress-deutschland.org/konfiguration/32318-url-category.html
Danke an alle, die in diesem Thread mit ihren Erfahrungen und Hinweisen geholfen haben. Ganz speziellen Dank an Ingo für die vielen Tests und Hinweise.
Auch auf das Plugin „Top Level Categories“ möchte ich noch hinweisen, manche WordPresser haben allerdings von Problemen mit diesem Plugin seit WP 2.5 berichtet.
Letzte Aktualisierung am 20. Juni 2008 um 08:23 von . Zurück zur Übersicht.
