Die Installation von WordPress wird dir bei vielen Anbietern inzwischen abgenommen und ist mit wenigen Klicks erledigt. Als Anwender siehst du oftmals nicht einmal eine Konfigurationsdatei und verpasst damit die Chancen, die sich bei der individuellen Konfiguration ergeben.
Wie ein guter Koch, der sich mit den Zutaten bestens auskennt, kannst du mit dem entsprechenden Wissen die Konfigurationsdatei von WordPress exakt auf deinen Geschmack abstimmen.
Im Folgenden zeige ich dir die Standardkonfiguration von WordPress, um darauf basierend einen Blick auf die weiteren Konfigurationsmöglichkeiten zu werfen. Wenn du dich also schon auskennst, kannst du mit Hilfe des Inhaltsverzeichnisses gleich zum entsprechenden Absatz springen.
Inhaltsverzeichnis
- 1 WP-Config: Standardkonfiguration
- 2 WP-Config: Erweiterte Anpassungen
- 3 WP-Config: Sicherheitseinstellungen
- 4 Zusammenfassung
WP-Config: Standardkonfiguration
Die Standardkonfiguration beinhaltet die Zugangsdaten für die (MySQL-)Datenbank, das gewünschte Präfix für die Datenbanktabellen, mehrere Sicherheitsschlüssel zur Authentifizierung, so wie den absoluten Pfad zum Verzeichnis, in dem sich WordPress befindet.
Dies alles findest du standardmäßig in der Datei wp-config.php
, die sich im obersten Verzeichnis von WordPress (oft das root-Verzeichnis genannt) befindet. Ist die Datei nicht vorhanden, kannst du die Datei wp-config-sample.php
als Blaupause verwenden. Benenne die Datei um in wp-config.php
und erstelle somit deine Konfigurationsdatei.
Datenbank-Zugangsdaten
Benötigt werden die Zugangsdaten zur Datenbank, die du von deinem Hoster erhältst. Abgefragt wird neben Datenbankname, Benutzername und Passwort der Name des Hosts, welcher von einem einfachen localhost
bis hin zu 127.0.0.1:/tmp/mysql5.sock
variieren kann. Wenn du den Hostnamen nicht finden kannst, hilft oftmals ein Blick auf die Liste der gängigen Hostnamen.
define('DB_NAME', 'datenbankname');
define('DB_USER', 'benutzername');
define('DB_PASSWORD', 'passwort');
define('DB_HOST', 'localhost');
Unicode UTF-8 ist der de facto Standard, um die Zeichen aller Sprachen darzustellen und muss in der Regel nicht geändert werden. Sonderfälle mit unterschiedlichen Sprachen kannst du mit DB_COLLATE
anpassen. Meistens kannst du den Wert aber leer lassen, sodass automatisch der Wert von DB_CHARSET
herangezogen wird. Hier kann die Standardeinstellung also getrost beibehalten werden.
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
Datenbank-Tabellenpräfix
WordPress legt alle Tabellen in der Datenbank mit dem Präfix wp_
an. Dieses Präfix kannst du bei der Installation festlegen. Es dient in erster Linie zur Kennung, z.B. bei mehreren WordPress-Installationen innerhalb einer Datenbank. Bei der Wahl eines eigenen Präfixes musst du darauf achten, dass du nur Buchstaben, Zahlen und Unterstriche verwenden darfst.
$table_prefix = 'wp_';
Sicherheitsschlüssel zur Authentifizierung
Gleich mehrere Schlüssel (engl. keys) und Salze (engl. salts) stellen sicher, dass bei der Verschlüsselung von Informationen (z.B. Cookies) genügend Variationen erzeugt werden. Dies erschwert es Hackern, an vertrauliche Daten zu kommen und trägt somit maßgeblich zur Sicherheit deiner Website bei.
define('AUTH_KEY', 'dein einzigartiger Token');
define('SECURE_AUTH_KEY', 'dein einzigartiger Token');
define('LOGGED_IN_KEY', 'dein einzigartiger Token');
define('NONCE_KEY', 'dein einzigartiger Token');
define('AUTH_SALT', 'dein einzigartiger Token');
define('SECURE_AUTH_SALT', 'dein einzigartiger Token');
define('LOGGED_IN_SALT', 'dein einzigartiger Token');
define('NONCE_SALT', 'dein einzigartiger Token');
Je länger, kryptischer und einzigartiger diese Werte sind, desto besser. WordPress stellt dafür einen Onlinegenerator zur Verfügung, bei dem du den ganzen Block nur noch kopieren und in deine Konfigurationsdatei einfügen musst.
Fehleranalyse & Debugging
Um bei der Entwicklung Fehler schneller zu finden, kannst du WordPress im Debugmodus betreiben. Dies ist ressourcenintensiv und nur zur Fehlersuche gedacht. Für eine laufende Seite solltest du WP_DEBUG
mit dem Wert false
deaktivieren.
define('WP_DEBUG', false);
Was Debugging ist, und wie du es zur Fehleranalyse nutzt, kannst du unter Fehler & Notfälle in der Wissensdatenbank nachlesen.
Absoluter Pfad zu WordPress
Am Ende der Datei befindet sich der absolute Pfad zum Verzeichnis von WordPress. Das Ändern des Wertes von ABSPATH
ist nicht vorgesehen.
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
Abschließend wird noch die Datei wp-settings.php
eingebunden, die weitere Dateien lädt und die Funktionen von WordPress initialisiert.
require_once(ABSPATH . 'wp-settings.php');
WP-Config: Erweiterte Anpassungen
Achtung!
Die im Weiteren vorgestellten Konfigurationsmöglichkeiten verändern die Funktionsweise von WordPress. Bitte nimm Änderungen an der Datei wp-config.php
nur vor, wenn du dir sicher bist, und prüfe die Änderungen vor dem Speichern genauestens.
Vor allem Änderungen an der Verzeichnisstruktur empfehlen sich nur bei der (Erst-)Installation von WordPress, da ansonsten weitere Anpassungen, wie das Aktualisieren der Datenbank, notwendig sind.
Änderungen an der Konfigurationsdatei
Änderungen und Erweiterungen in der Datei wp-config.php
dürfen nicht am Ende der Datei erfolgen, sondern müssen vor folgendem Kommentar eingefügt werden.
/* That's all, stop editing! Happy blogging. */
Hierarchie und Benennung
Du kannst die Namen und Struktur der Verzeichnisse nach Belieben anpassen. Dies ist vor allem für das Zusammenspiel mit anderen Frameworks wie z.B. Angular JS oder React relevant.
WordPress-URL
Mittels WP_SITEURL
wird definiert, wo sich die Dateien von WordPress befinden, und zwar unabhängig davon, was in der zugehörigen Datenbankeinstellung hinterlegt ist.
define( 'WP_SITEURL', 'https://hootproof.de' );
Dies ist nicht nur hilfreich beim Umzug von WordPress, sondern spart auch Anfragen an die Datenbank. Wichtig ist, dass du die URL ohne Schrägstrich am Ende einträgst.
Website-URL
Die URL, die deine Besucher im Browser eingeben, wird über WP_HOME
gesteuert und spart weitere Datenbankanfragen.
define( 'WP_HOME', 'https://hootproof.de' );
Befinden sich die Dateien von WordPress im obersten Verzeichnis ist der Wert identisch mit WP_SITEURL
.
Contentverzeichnis & URL
Alle seitenspezifischen Dateien, die für deine Website relevant sind, befinden sich standardmäßig im Ordner wp-content (mehr zur WordPress-Verzeichnisstruktur)
. Dies umfasst u.a. Plugins und Uploads, aber auch das Caching. Um Link und Verzeichnis dieses Ordners zu ändern, musst du WP_CONTENT_URL
und WP_CONTENT_DIR
anpassen. WP_CONTENT_DIR
ist dabei der vollständige Serverpfad zum Verzeichnis (ohne Schrägstrich am Ende) und WP_CONTENT_URL
die öffentliche URL, über die die Dateien aufgerufen werden.
Um wp-content in website umzubenennen, sieht die Anpassung folgendermaßen aus:
define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/website' );
define( 'WP_CONTENT_URL', 'https://hootproof.de/website' );
Pluginverzeichnis & URL
Auch den Namen für den Ordner der Plugins kannst du an die eigenen Wünsche anpassen.
define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/website/plugins' );
define( 'WP_PLUGIN_URL', 'https://hootproof.de/website/plugins' );
Uploads
Die Uploads befinden sich im Verzeichnis wp-content/uploads
. Diesen Wert musst du im Gegensatz zu den anderen als relativen Pfad angeben, ansonsten kannst du den Wert aber frei definieren.
define( 'UPLOADS', '/website/media' );
Hinweis: Relative Pfade mit einem Schrägstrich zu Beginn verweisen auf das oberste Verzeichnis der Website!
FTP- & SSH-Zugangsdaten
Je nach Konfiguration des Servers müssen die Zugangsdaten hinterlegt werden, um Updates bequem durchführen zu können. Alle Infos dazu findest du im Artikel FTP-Zugangsdaten in WordPress speichern in der Wissensdatenbank.
Automatische Updates
Die automatischen Updates von WordPress kannst du im Detail konfigurieren oder wahlweise komplett deaktivieren. AUTOMATIC_UPDATER_DISABLED
deaktiviert alle automatischen Updates.
define( 'AUTOMATIC_UPDATER_DISABLED', true );
WP_AUTO_UPDATE_CORE
beeinflusst nur die Updates für WordPress und kann die Werte false
, true
oder 'minor'
annehmen.
define( 'WP_AUTO_UPDATE_CORE', false );
Wenn du alle Updates (auch Plugins) selbst steuern möchtest, empfehle ich dir das Plugin Vevida Optimizer.
Automatisches Speichern & Revisionen
Beim Arbeiten in WordPress werden die Änderungen automatisch alle 60 Sekunden in einer neuen Revision gespeichert. Dieses Intervall steuerst du über AUTOSAVE_INTERVAL
.
define( 'AUTOSAVE_INTERVAL', 120 ); // 120 Sekunden
Dabei entstehen schnell viele Datensätze, die oftmals nicht gebraucht werden. Ein Limit für die max. Anzahl an Revisionen kannst du mittels WP_POST_REVISIONS
festlegen.
define( 'WP_POST_REVISIONS', 25 );
Alternativ kannst du die Revisionen mit dem Wert false
auch komplett deaktivieren.
Papierkorb
Auch im Papierkorb sammelt sich schnell viel Datenmüll an, der 30 Tage lang wertvollen Speicherplatz belegt. Das automatische Leeren des Papierkorbs kann mittels EMPTY_TRASH_DAYS
in Tagen festgelegt werden.
define( 'EMPTY_TRASH_DAYS', 30 ); // 30 Tage
Mit dem Wert 0
deaktivierst du die Funktion des Papierkorbs vollständig. Aber Achtung, die Daten werden dann sofort und unwiderruflich gelöscht.
Cache
Das WordPress-Caching aktivierst du über WP_CACHE
.
define( 'WP_CACHE', true );
Caching-Plugins erweitern die Funktionalität des Cachings um weitere Funktionen. Viele der gängigen Caching-Plugins benötigen deswegen noch zusätzliche Einstellungen in der wp-config.php
, aber auch in anderen Dateien wie z.B. der Datei .htaccess
.
W3 Total Cache
Das Plugin W3 Total Cache benötigt zusätzlich zum aktivierten WP_CACHE
eine eigene Einstellung.
define('W3TC_EDGE_MODE', true);
WP Super Cache
WP Super Cache von Automattic erwartet den Serverpfad zum Verzeichnis, in dem sich das Plugin befindet.
define( 'WPCACHEHOME', '/var/www/website/plugins/wp-super-cache/' );
Cookies
Wenn du im Zusammenhang mit dem Caching eine Subdomain für statische Inhalte nutzt, kannst du die Cookies beschränken. Cookies werden dann nur noch für die Domain gesetzt, die du als COOKIE_DOMAIN
definiert hast.
define( 'COOKIE_DOMAIN', 'hootproof.de' );
Darüber hinaus gibt es für Cookies noch tiefergreifende Einstellungen zu COOKIEPATH
, SITECOOKIEPATH
, ADMIN_COOKIE_PATH
und PLUGINS_COOKIE_PATH
.
WordPress Multisite
In einer Multisite werden mehrere Instanzen von WordPress über eine Installation verwaltet. Diesen Ansatz kannst du in der wp-config.php
aktivieren, jedoch sind dafür noch weitere Schritte zur Konfiguration des Netzwerks erforderlich.
define( 'WP_ALLOW_MULTISITE', true );
WP-Config: Sicherheitseinstellungen
wp-config.php
absichern
Die Konfigurationsdatei wp-config.php
ist die wichtigste Datei in WordPress. Hier befinden sich sensible (Zugangs-)Daten, die unter keinen Umständen und zu keiner Zeit öffentlich einsehbar sein dürfen.
Dateiberechtigungen
Bei einer laufenden Website gibt es selten einen guten Grund, um Änderungen an der Konfigurationsdatei vorzunehmen. Nach der Konfiguration kannst du die Dateiberechtigungen so minimal wie möglich ansetzen.
Zugang zur Datei
Die Datei wp-config.php
wird im Browser nur als eine weiße Seite dargestellt. Wenn du auf Nummer sicher gehen willst, kannst du den Zugang zur Datei über die .htaccess
aktiv unterbinden.
<files wp-config.php>
order allow,deny
deny from all
</files>
Noch besser ist es, die Datei an einem Ort abzulegen, der gar nicht erst über den Browser aufgerufen werden kann. Dafür entfernst du alle sensiblen Daten aus der Datei wp-config.php
und lädst diese aus einem nicht öffentlichen Verzeichnis. Dieser Schritt ist zugegebenermaßen nichts für Anfänger ohne PHP-Kenntnisse!
require_once(ABSPATH . '../config/wp-config.php');
WordPress absichern
SSL aktivieren
Ein SSL-Zertifikat sorgt für mehr Sicherheit beim Übertragen sensibler Daten. Du solltest dies auf jeden Fall für den Login und den Adminbereich aktivieren, damit weder Passwörter noch Cookies im Klartext übertragen werden.
define( 'FORCE_SSL_ADMIN', true );
Voraussetzung für eine verschlüsselte Übertragung ist ein valides SSL-Zertifikat, das du z.B. von Let’s Encrypt erhältst.
Theme- & Plugin-Editor deaktivieren
Um Änderungen an Dateien in Themes und Plugins aus dem Adminbereich zu unterbinden, kannst du den Code-Editor unter Design » Editor deaktivieren.
define( 'DISALLOW_FILE_EDIT', true );
Wenn du noch einen Schritt weiter gehen willst, hast du zudem die Möglichkeit, auch das Installieren und Aktualisieren von Plugins und Themes zu unterbinden. Der Code-Editor wird in diesem Fall ebenfalls deaktiviert.
define( 'DISALLOW_FILE_MODS', true );
Zusammenfassung
WordPress lässt sich extrem vielfältig konfigurieren und kann zwischen vielen unterschiedlichen Szenarien und Anwendungsbereichen unterscheiden. In diesem Beitrag hast du die wichtigsten Konfigurationsmöglichkeiten kennengelernt. Wie du gesehen hast, kannst du mit verhältnismäßig wenig Aufwand und ohne zusätzliche Plugins noch einiges an Individualität, Performance und Sicherheit herausholen. Weitere Informationen findest du im WordPress Codex.
Was ist dir bei der Konfiguration von WordPress am wichtigsten und welche Tricks nutzt du am häufigsten? Teile deine Erfahrungen gerne in den Kommentaren unter diesem Beitrag.
Quelle Titelbild: Death To Stock
Danke für die Erklärungen! Die wp-config.php kann man mit dem entsprechenden Wissen dann auch schnell und einfach generieren lassen! generatewp.com/wp-config
sehr Interessante Erläuterung und danke dafür.
Meine Fragen dazu:
1. Bisher wird WordPress ins Hauptverzeichnis gelegt. wenn ich nun ein Unterverzeichnis erstelle, bringt das Schutz vor Angriffe und muss ich in der wp-config.php diesbezüglich einen Link einfügen? wir müßte der heißen? (Oder macht man die Umleitung beim Webhoster?)
2.wenn ich den Theme-&Plugin-Editor deaktiviere, so wie oben beschrieben, wird doch automatisch kein Plugin mehr aktualisiert?
3. bringt es Schutz vor Angriffe, den Tabellenpräfix zu ändern?
danke für die Antworten und die ausführlichen Ratschläge zum Theme WordPress.
Maria-Anne
Hallo Maria-Anne,
1. WordPress in ein Unterverzeichnis zu liegen bietet keinen zusätzlichen Schutz, dafür aber jede Menge Komplikationen bei der Einrichtung. Die wp-config.php sollte durch Dateizugriffsrechte geschützt werden. Das relative Verzeichnis innerhalb des Hauptordners (in dem auch die wp-config.php liegt) und den Unterverzeichnissen (wp-admin usw.) muss so bleiben wie es ist.
2. Nein, das hat damit nichts zu tun. Es ging hier nur um den PHP-Editor für Theme- und Plugin-Dateien.
3. unwesentlich
Ein weiterer toller, praktischer Artikel dazu: https://raidboxes.de/blog/massnahmen-gegen-brute-force-attacken/