Zuerst einmal generiert WordPress automatisch eine .htaccess Datei. Im Allgemeinen ist die .htaccess Datei dafür zuständig den Permalink beziehungsweise die URL umzuschreiben und aus einem „index.php?p=1“ kann so eine lesbare URL für den Benutzer werden. Hier noch ein genaueres Beispiel: Aus dem kryptischen „www.kaycosmic.de/index.php?p=1“ wird so eine für den Benutzer sprechende Url „www.kaycosmic.de/impressum“. Die Permalinkstruktur kann man in WordPress im Admin unter Einstellungen und dort unter dem Punkt Permalink einstellen. Hier werden fünf verschiedene Varianten angeboten, aber man kann auch selbst eine Permalinkstruktur definieren. Im Screenshot ist noch zu sehen, dass man optional Basen vergeben kann in Bezug auf Kategorien und Schlagwörtern. Hier sieht man auch direkt ein Beispiel.
Folgende .htaccess generiert WordPress automatisch, wenn man im Admin unter Einstellungen auf Permalinks geht und dort die Permalinkstruktur auswählt:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase / RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Wenn man diese betrachtet, fällt einem direkt das „<IFModule mod_rewrite.c> auf. Dieses Kommando überprüft, ob das Apache Modul ModRewrite installiert und aktiv ist. Falls das nicht der Fall sein sollte, werden die folgenden Regeln nicht beachtet. Bevor man also die Permalinkstruktur ändert, muss man vorher klarstellen, ob auf dem Server ModRewrite aktiv ist, sonst verlaufen die internen Links zu z.B. Seiten ins leere und oft kommt man zudem dann nicht mal mehr in den Admin um die Permalinkstruktur wieder zurückzusetzen. Da bleibt einem nur die Möglichkeit das in der Datenbank zu korrigieren. Dazu ruft man meistens den PhpMyAdmin auf und ruft die Tabelle „xxx_options“ (xxx steht für gewählten Prefix), sucht da in dem Feld „option_name“ nach „permalink_structure“ und löscht dort den Inhalt des Feldes „option_value“. Um also das Problem erst gar nicht aufkommen zu lassen, prüft man einfach über ein kleines PHP-Script, ob mod-rewrite aktiv ist. In diesem PHP-Script baut man einfach die Funktion „phpinfo()“, die die Servereinstellungen ausgibt, ein. Nachdem Aufruf des Scripts sucht man im Browser nach mod_rewrite. Falls es nicht erscheinen sollte, ist es wahrscheinlich nicht installiert. Zusätzlich sollte man in sein Konfigurationstool vom Hoster wie z.B. Confixx nachschauen, ob man es dort aktivieren kann bzw. ob es aktiviert ist. Falls auch hier kein Anhaltspunkt zu finden ist, sollte man seinen Hoster höflich fragen, ob ModRewrite aktiviert ist und wenn nicht, ob er dieses aktivieren kann.