WordPress und Permalinks
In WordPress kann man für schönere URLs die Permalinks aktivieren. Diese werden nur für die Struktur der Artikel-URL festgelegt, zusätzlich kann ein Präfix für Kategorien und Tags vorgegeben werden, für Seiten jedoch gibt es keine extra Einstellmöglichkeit.
Für Artikle steht eine Vielzahl von von Platzhaltern (Variablen) zur Verfügung, die bei Zusammensetzen der URL durch die jeweiligen Daten des konkreten Artikels ersetzt werden.
Auch wenn man Permalinks nur für die Artikle wirklich konfigurieren kann, wirken sich die dort gewählten Optionen auch auf die Seiten und andere URLs in WordPress aus. Einen sichtbaren Effekt hat die Entscheidung, ob man die Permalinks mit einem Schrägstrich abschließt oder nicht. Entsprechend erhalten auch alle anderen von WordPress generierten URLs diesen Schrägstrich oder nicht. Das gilt übrigens nur für den Schrägstrich (Slash), alle anderen Endungen wie z.B. .html werden dabei nicht übernommen.
WordPress und Rewrite-Rules
Damit WordPress die Permalinks wieder in konkrete Artikel- und Seiten-IDs auflösen kann, wird eine Liste von Regeln (RewriteRules) erstellt, die sequentiell abgearbeitet wird. Mit dem ersten passenden Treffer wird dann die Datenbankabfrage für einen Artikel oder eine Seite, für eine Kategorie- oder Tagübersicht oder einen Feed usw. erstellt.
Wie diese interne Liste aussieht hängt unter anderem auch davon ab, welche Struktur für die Artikel bei der Permalinkkonfiguration gewählt wird. WordPress muß Artikel von Seiten eindeutig unterscheiden können und das funktioniert nur, wenn die Permalinks als ersten Platzhalter keinen variablen Wert wie Postname (%postnam%), Kategorie (%category%), Tag (%tag%) oder Autor (%author%) enthalten. Andernfalls werden für jede statische Seite jeweils 11 Einträge in der Liste der RewriteRules erstellt, die so aussehen:
[seite-1/attachment/([^/]+)/?$] => index.php?attachment=$matches[1] [seite-1/attachment/([^/]+)/trackback/?$] => index.php?attachment=$matches[1]&tb=1 [seite-1/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?attachment=$matches[1]&feed=$matches[2] [seite-1/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$] => index.php?attachment=$matches[1]&feed=$matches[2] [seite-1/attachment/([^/]+)/comment-page-([0-9]{1,})/?$] => index.php?attachment=$matches[1]&cpage=$matches[2] [(seite-1)/trackback/?$] => index.php?pagename=$matches[1]&tb=1 [(seite-1)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?pagename=$matches[1]&feed=$matches[2] [(seite-1)/(feed|rdf|rss|rss2|atom)/?$] => index.php?pagename=$matches[1]&feed=$matches[2] [(seite-1)/page/?([0-9]{1,})/?$] => index.php?pagename=$matches[1]&paged=$matches[2] [(seite-1)/comment-page-([0-9]{1,})/?$] => index.php?pagename=$matches[1]&cpage=$matches[2] [(seite-1)(/[0-9]+)?/?$] => index.php?pagename=$matches[1]&page=$matches[2]
Das mag bei wenigen Seiten zwar kaum ins Gewicht fallen, bei hunderten oder gar tausenden Seiten aber schon. Einerseits belegen diese vielen Regeln Speicher, andererseits müssen sie jedesmal abgearbeitet werden, bei z.B. 300 Seiten mehr als 3300 Listeneinträge. Probleme kann es auch beim Anlegen und Ändern von Seiten geben, denn die Liste muß dann jedesmal neu erstellt werden.
Permalinks für statische Seiten optimieren
Wenn man viele statische Seiten verwendet oder vielleicht gar keine Artikel (WordPress als CMS), sollte man als ersten Platzhalter (Strukturtag) in den Permalinks einen numerischen Wert wie Datum (year,monthnum,day), Zeit (hour,minute,second) oder die ID (post_id) verwenden. Die von WordPress zur Auswahl angebotenen Möglichkeiten erfüllen diese Bedingungen:
Tag und Name: | /%year%/%monthnum%/%day%/%postname%/ |
Monat und Name: | /%year%/%monthnum%/%postname%/ |
Numerisch: | /archives/%post_id% |
Für Benutzerdefinierte Einstellungen wären z.B. /%post_id%-%postname%/ geeignet. Es darf auch ein fester Text vor dem ersten numerischen Wert stehen, also z.B. /news/%post_id%-%postname%/.
Mit diesen Permalinkeinstellungen werden keine extra Rules je Seite erzeugt, das spart zumindest bei WordPressinstallationen mit sehr vielen statischen Seiten Speicherplatz und Abarbeitungszeit.
Ich habe das mit den Premalinks schon ausprobiert – klappt super…insgesamt bin ich mit WordPress sehr zufrieden, weil es gerade für den ungeübten Nutzer nicht allzu schwierig ist!
Danke für den wirklich sehr ausführlichen Artikel. Ich wusste gar nicht, dass durch die „falsche“ Permalink Einstellung bei Seiten die Seite doch starke Performance Probleme bekommen kann, allerdings hab ich jetz glaub ich den richtigen Punkt gefunden wieso eine meiner Seiten mit knapp 2000 Seiten so viel langsamer ist als andere :)
Danke!
Ich arbeite sehr viel mit „Seiten“ und habe jetzt genau diese angesprochenen Probleme und WordPress arbeitet bei der Erstellung von Seiten sehr langsam.
Aber wie ändere ich denn die Linkstruktur von Seiten?
Wenn ich unter Einstellungen – Permalinks was ändere, hat dies nur Auswirkungen auf die Artikel.
Wo kann man das mit Seiten machen?
Danke für jeden Hinweis.
Steht glеiсh im ersten Absatz:
„… für Seiten jedoch gibt es keine extra Einstellmöglichkeit“
Die Permalink-Einstellungen für die Artikel wirken sich aber positiv bzw. negativ auf die interne Verarbeitung der Seiten-URLs aus (Stichwort: RewriteRules).
Dachte „WordPress und Permalinks“ beschreibt was Permalinks sind, etc. Deshalb den Abschnitt nicht gelesen.
Jetzt verstehe ich das und es klappt auch. Danke
Hi, vielen Dank für den Artikel. Ich habe lange nach nem hilfreichen Artikel gesucht gestern. Wir kann ich denn überprüfen, ob meine Probleme behoben sind? Nachdem ich die Permalinkstruktur geändert habe (jetzt: /jahr/monat/postname) sehe ich am Aufbau der Seite noch keine Verbesserung. Dauert immernoch ewig. Laut Google Webmastertools (Stand 11.02.) habe ich 436 x 404er-no reads dadurch, dass ich kürzlich meine Seiten-Struktur verändert habe und zwei Seiten eingefügt habe. Dadurch sind nun posts und tags doppelt vorhanden und nicht lesbar. :-( Ich bin total überfragt und hoffe, Du hast ne Idee? Tausend Dank!
@Britta
Bitte nicht mißverstehen. Die Änderung bringt nur etwas, wenn man sehr viele statische Seiten (nicht Artikel!) hat.
Zudem ist eine Änderung im nachhinein problematisch, weil eben die Links dann nicht meht stimmen. Besser ist es, soetwas bereits in der Planungsphase zu berücksichtigen.
Bei Deiner Seite sehe ich eher keine Probleme wegen zu vieler statischer Seiten. Also ist es insofern viellеiсht besser, wieder die alte Permalink-Struktur einzustellen, damit die Links wieder stimmen.