Vorab: Klingt wahrscheinlich pingelig und es liegt mir fern dich zu schulmeistern aber es prägt sich sonst schnell verkehrt ein: es heißt nicht config.php
, sondern wp-config.php
.
Die Konstanten
define('WP_HOME', '…');
define('WP_SITEURL', '…');
sind grundsätzlich nur nötig, wenn du mit einer Staging- und Produktiv-Umgebung auf verschiedenen Servern arbeitest. Damit wird dann der Datenbank-Eintrag in der Datenbank-Tabelle wp_options
überschrieben – und genau hier ist das Problem. Gibst du den Wert über Konstanten fest vor, ist eine spätere Änderung in Einstellungen > Allgemein nicht mehr möglich … und die Sucherei beginnt.
Grundsätzlich solltest du bestens ohne die Einträge zurecht kommen. Falls nicht, prüf nochmal, was in der Datenbank-Tabelle wp_options
unter siteurl
und (etwas blättern) home
aktuell eingetragen ist. Diesen Eintrag kannst du bei Bedarf ändern.
Dass die Permalinks so komisch gebildet werden, kann ich mir im Moment nur mit einer fehlerhaften Einstellung im Menü Permalinks erklären. Die Abhilfe ist aber einfach: du benennst die vorhandene .htaccess
in .old.htaccess
um, meldest dich wieder im Backend an (das sollte jetzt klappen) und nimmst die Einstellungen > Permalinks erneut vor.
Danke für Deine Antwort!
Den Eintrag in der wp-config.php hab ich nochmal rausgenommen. Der war aber identisch mit dem Eintrag in der Datenbank.
Aber ich habs gefunden. Die .htaccess war zwischen
# BEGIN WordPress
und # END WordPress leer.
Ich hab aus einem Backup den fehlenden Teil wieder ergänzt und kann mich tatsächlich wieder einloggen.
Danke!
Jetzt würde ich natürlich gerne noch verstehen, was wordpress da im Hintergrund macht, wenn ich die Permalinks ändere. Kannst Du sagen, wo man da am besten anfängt zu lesen?
Jedenfalls freu ich mich gerade, dass ich mich hier angemeldet hab!
Der war aber identisch mit dem Eintrag in der Datenbank.
Dann brauchst du den Eintrag in der wp-config.php
ja auch nicht. 🙂
Jetzt würde ich natürlich gerne noch verstehen, was wordpress da im Hintergrund macht, wenn ich die Permalinks ändere
Ohne Permalink-Einstellungen ist jeder Blogbeitrag über eine permanent vergebene Datenbank-ID abrufbar, also sinngemäß sowas wie https://example.com/?p=42
für den Beitrag mit der Datenbank-ID 42. Da sich das kaum ein Webseitenbesucher merken kann, wurden „sprechende“ Permalinks eingeführt, die den Titel des Beitrags/der Seite als Titelform (so genannten „Slug“) enthalten. https://example.com/ueber-uns
ist da schon aussagefähiger und auch besser zur Suchmschinenoptimierung. Durch die Weiterleitungsregel wird dafür gesorgt, dass für alle Seitenaufrufe die Datei index.php
aufgerufen wird und dieser der Slug zur Datenbankabfrage übergeben wird:
# Wenn die URL einen Dateinamen enthält
# und der weder eine vorhandene Datei anspricht (z.B. wp-login.php)
RewriteCond %{REQUEST_FILENAME} !-f
# und auch kein vorhandenes Verzeichnis anspricht (z.B. wp-admin)
RewriteCond %{REQUEST_FILENAME} !-d
# dann öffne immer die index.php.
RewriteRule . /index.php [L]
In der Datenbank wird dann nach einem Beitrag mit der Titelform ueber-uns
gesucht und der Beitrag mit der entsprechenden Datenbank-ID ausgegeben.
Das setzt voraus, dass das Webserver-Modul mod_rewrite
installiert wurde und die Serverkonfiguration vom Anwender mit Hilfe einer .htaccess
angepasst werden kann, was durch einen Eintrag in der Virtual-Host-Konfigurationsdatei festgelegt wird.
Mehr Informationen auch zur Fehlerbehebung findest du in der Dokumentation: Using Permalinks
Danke, da hab ich was zu lesen. 🙂
Denkst du bitte noch daran, den Thread als „gelöst“ zu markieren, wenn deine Frage hinreichend beantwortet wurde? Dann können sich andere Helfer gleich mit der nächsten Frage beschäftigen.
Sorry. Hab ich gerade nachgeholt.