Willkommen beim WP Wegerl.at 'Lesemodus'!
Entspanntes Lesen und spannende Artikel warten auf dich.
Entdecke unsere besten Beiträge und genieße den Lesemodus.
Wartungsmodus, Maintenance Mode
smilies.4-user.de

Wartungsmodus in WordPress
mit .htaccess steuern

Illustration wattblicker
Info echo
OpenClipart-Vectors-katze-1

Ist der Classic-Editor schon zu kennen? –
"Advanced Editor Tools – ist so klasse!"
Anklickt! – Advanced Editor Tools; und NEU! – Classic Widgets

Info echo
OpenClipart-Vectors-katze-2

Classic-Editor mit Advanced Editor Tools
"Advanced Editor Tools – Ausgezeichnet!"
Advanced Editor Tools; und NEU! – Classic Widgets

Info echo
OpenClipart-Vectors-katze-3

Klassischen Editor anwenden! – und …
"Advanced Editor Tools – ist sehr gut!"
Advanced Editor Tools immer NEU – Classic Widgets

Info echo
OpenClipart-Vectors-katze-7

… die Welt gehört dem, der sie genießt.
– mit Advanced Editor Tools!
Advanced Editor Tools immer NEU! – Classic Widgets

Info echo
OpenClipart-Vectors-katze-4

Aktive Installationen: 2+ Millionen
"Advanced Editor Tools – ist so fabelhaft!"
Advanced Editor Tools immer NEU! Classic Widgets

Info echo
OpenClipart-Vectors-katze-5

Antörnend! – so gehts hier zur Lancierung
"Advanced Editor Tools – ist de luxe!"
Advanced Editor Tools immer NEU! – Classic Widgets

Info echo
OpenClipart-Vectors-katze-6

… Classic Widgets sind so praktisch!
"Classic Widgets – sind so grandiose!"
Advanced Editor Tools immer NEU! – Classic Widgets

Info echo
OpenClipart-Vectors-katze-8a

Werkraum ist Werkraum – Frontend ist Frontend
Katzen SVG OpenClipart-Vectors; Ticker von Ditty News Ticker
"Advanced Editor Tools – ist so fein!"
Advanced Editor Tools immer NEU! – Classic Widgets

In WordPress kann der Wartungsmodus (Maintenance Mode) auf verschiedene Arten aktiviert werden. Eine Möglichkeit besteht darin, die .htaccess-Datei zu verwenden, um basierend auf der IP-Adresse des Benutzers zu entscheiden, ob der Wartungsmodus aktiviert werden soll. Im folgenden Artikel wird dieser Ansatz detailliert erklärt, zusammen mit einer Vorlage für den Wartungsmodus. Anschließend gehen wir noch kurz auf ein Plug-in ein. Zusätzlich gibt es einen kurzen Ausflug in die Welt der ASCII-Art, der als Vorlage für eine kreative Gestaltung dienen kann.

Exkurs über die Regeln zum Wartungsmodus

Bei der Konfiguration des Wartungsmodus über die .htaccess-Datei sind verschiedene Rewrite-Regeln entscheidend, um sicherzustellen, dass Besucher die angemessene Benachrichtigung erhalten. Hier sind die Schlüsselregeln und wie sie zusammenarbeiten.

Achtung, der Exkurs dient nur dazu, die Regeln zu interpretieren und die tatsächliche Implementierung des Wartungsmodus erfolgt durch die Überschrift Wartungsmodus über .htaccess.

RewriteEngine On
RewriteBase /

# Überprüfe, ob die Wartungsseite existiert
RewriteCond %{DOCUMENT_ROOT}/wartungsmodus.php -f

# Überprüfe, ob die Anfrage von der spezifischen IP-Adresse stammt
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.012$

# Überprüfe, ob die Anfrage nicht bereits zur Wartungsseite führt
RewriteCond %{REQUEST_URI} !^/wartungsmodus\.php$

# Wenn alle Bedingungen erfüllt sind, leite die Anfrage zur PHP-Datei weiter mit Statuscode 503
RewriteRule ^(.*)$ /wartungsmodus.php [L,R=307]

# Anpassen der Retry-After-Zeit in Sekunden nach Bedarf
#Header always set Retry-After "3600"

Teil RewriteEngine On und RewriteBase /

1. RewriteEngine On

  • RewriteEngine: Dies ist eine Direktive, die die Apache mod_rewrite-Engine aktiviert oder deaktiviert. mod_rewrite ist ein Apache-Modul, das es ermöglicht, URL-Umleitungen und Rewrites durchzuführen.
  • On: Dieser Parameter gibt an, dass die mod_rewrite-Engine aktiviert wird.

Zusammengefasst bedeutet diese Anweisung, dass die Rewrite-Engine aktiviert wird, was notwendig ist, um die nachfolgenden Rewrite-Regeln zu interpretieren und umzusetzen.

2. RewriteBase /

  • RewriteBase: Diese Direktive legt das Basis-Verzeichnis für relative Pfadangaben in den Rewrite-Regeln fest.
  • /: Hier wird das Wurzelverzeichnis als Basis-Verzeichnis festgelegt. Das bedeutet, dass relative Pfade in den Rewrite-Regeln vom Wurzelverzeichnis der Website ausgehen.

Zusammengefasst bedeutet diese Anweisung, dass relative Pfade in den Rewrite-Regeln im Kontext des Wurzelverzeichnisses der Website interpretiert werden sollen.

In Kombination schaffen RewriteEngine On und RewriteBase / die grundlegende Konfiguration für die Verwendung von Rewrite-Regeln in der .htaccess-Datei. Die Engine wird aktiviert, und das Basisverzeichnis für relative Pfade wird auf das Wurzelverzeichnis der Website festgelegt.

In den meisten Shared-Webhosting-Umgebungen ist die mod_rewrite-Engine standardmäßig aktiviert. Dies bedeutet, dass du normalerweise keine zusätzliche Konfiguration für RewriteEngine On in der .htaccess-Datei vornehmen musst, da sie bereits durch den Hosting-Provider aktiviert ist.

Ebenso ist die RewriteBase / normalerweise nicht unbedingt erforderlich, da der Standardwert normalerweise das Wurzelverzeichnis (/) ist. In den meisten Fällen kannst du diese Anweisung weglassen, und es wird automatisch auf das Wurzelverzeichnis verwiesen.

Es ist jedoch immer ratsam, die spezifischen Dokumentationen deines Hosting-Providers zu überprüfen oder direkt mit ihrem Support-Team zu sprechen, um sicherzustellen, dass die mod_rewrite-Engine aktiviert ist und welche Standardwerte für die RewriteBase gelten. Je nach Hosting-Anbieter können die Konfigurationen leicht variieren.

RewriteCond-Teile

1. RewriteCond %{DOCUMENT_ROOT}/wartungsmodus.php -f

  • %{DOCUMENT_ROOT}: Dies ist eine Server-Variable, die das physikalische Verzeichnis des Wurzelverzeichnisses des Servers repräsentiert. In diesem Fall, %{DOCUMENT_ROOT} gibt den vollständigen Pfad zum Wurzelverzeichnis der Website an.
  • /wartungsmodus.php: Dies ist der Pfad zur Wartungsmodus-Datei, die im Wurzelverzeichnis der Website liegt.
  • -f: Dieser Ausdruck überprüft, ob die angegebene Datei (/wartungsmodus.php) als reguläre Datei existiert. Das -f-Flag steht für "file" und wird verwendet, um zu überprüfen, ob die Datei vorhanden ist.

Zusammengefasst bedeutet diese Bedingung, dass die Regel nur angewendet wird, wenn die Datei wartungsmodus.php als reguläre Datei im Wurzelverzeichnis des Servers existiert.

2. RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.012$

  • %{REMOTE_ADDR}: Dies ist eine Server-Variable, die die IP-Adresse des Clients enthält, der die Anfrage gestellt hat.
  • !^123\.456\.789\.012$: Dies ist ein regulärer Ausdruck mit dem Negationsoperator (!), der prüft, ob die IP-Adresse des Clients NICHT mit "123.456.789.012" übereinstimmt. In diesem Beispiel wird die Regel nur angewendet, wenn die IP-Adresse des Clients nicht genau der angegebenen IP-Adresse entspricht.

Zusammengefasst bedeutet diese Bedingung, dass die Regel nur angewendet wird, wenn die Anfrage NICHT von der spezifizierten IP-Adresse stammt.

3. RewriteCond %{REQUEST_URI} !^/wartungsmodus\.php$

  • %{REQUEST_URI}: Dies ist eine Server-Variable, die den Teil der URL enthält, der nach der Domain kommt.
  • !^/wartungsmodus\.php$: Dieser reguläre Ausdruck prüft, ob die angeforderte URL nicht mit "/wartungsmodus.php" endet.

Zusammengefasst bedeutet diese Bedingung, dass die Regel nur angewendet wird, wenn die angeforderte URL nicht bereits auf die wartungsmodus.php umleitet, um Endlosschleifen zu vermeiden.

Die Kombination dieser Bedingungen stellt sicher, dass der Wartungsmodus nur aktiviert wird, wenn die Datei wartungsmodus.php vorhanden ist, die Anfrage von einer bestimmten IP-Adresse stammt und die URL nicht bereits auf wartungsmodus.php umleitet.

RewriteRule-Teil

RewriteRule ^(.*)$ /wartungsmodus.php [L,R=307]:

  • ^(.*)$: Dies ist das Muster, nach dem die angeforderte URL abgeglichen wird. Hier wird (.*) verwendet, was so viel bedeutet wie "alles". Es passt also auf jede URL, die angefordert wird.
    • /wartungsmodus.php: Dies ist der Pfad zur Wartungsmodus-Datei, auf die der Besucher umgeleitet wird, wenn der Wartungsmodus aktiviert ist. Hier wird angenommen, dass diese Datei im Stammverzeichnis (root) der WordPress-Installation liegt.
    • [L,R=307]: Dieser Teil gibt die Aktion an, die durchgeführt wird, wenn das Muster übereinstimmt:
      • [L]: Das "Last"-Flag sorgt dafür, dass dies die letzte Regel ist, die auf die aktuelle Anfrage angewendet wird. Nachdem diese Regel angewendet wurde, wird die Verarbeitung der RewriteEngine für diese Anfrage beendet.
      • R steht für die Umleitungsoption.
      • [R=307]: Diese Umleitungsoption erzeugt eine Umleitung mit dem HTTP-Statuscode 307. Dies teilt Suchmaschinen und Browsern mit, dass es sich um eine temporäre, vorübergehende Umleitung handelt.

Die RewriteRule-Anweisung im Kontext des Wartungsmodus leitet also jede angeforderte URL auf die wartungsmodus.php um und gibt dabei den Statuscode 307 zurück, um die vorübergehende Nichtverfügbarkeit zu signalisieren.

Status 302 vs. 307?

  • R=302 steht für eine temporäre Umleitung.
  • R=307 steht für eine vorübergehende Umleitung.

Die Zahlen entsprechen den HTTP-Statuscodes für Umleitungen:

  • 302 Found (Temporarily Moved): Diese Umleitung ist temporär und bedeutet, dass die Ressource vorübergehend an einer anderen Adresse zu finden ist. Der Browser merkt sich die ursprüngliche Adresse und verwendet sie weiterhin in zukünftigen Anfragen.
  • 307 Temporary Redirect (Temporary Redirect): Ähnlich wie 302, signalisiert aber explizit, dass die Umleitung temporär ist und der Browser die ursprüngliche Anfragemethode beibehalten soll (GET, POST, etc.).

Im Kontext von Suchmaschinen kann die Wahl des Statuscodes beeinflussen, wie sie die Seite behandeln. In der Regel sind beide für temporäre Situationen geeignet.

Wenn die Suchmaschinen verstehen sollen, dass die Seite vorübergehend nicht verfügbar ist und die Anfrage später wiederholt werden kann, können R=302 oder R=307 verwendet werden. Probiere beide aus und sieh, welcher besser für deine Bedürfnisse funktioniert.

Retry-After-Zeit, wird hier mit # auskommentiert ist, da sie auch im wartungsmodus.php verfügbar ist und dort eingestellt werden kann.

  • Header always set Retry-After "3600": Diese Anweisung fügt einen HTTP-Header mit dem Namen "Retry-After" hinzu, der den Browsern und Suchmaschinen mitteilt, dass es empfohlen wird, die Ressource nach einer bestimmten Zeit erneut zu versuchen. In diesem Beispiel ist die Wartezeit auf 3600 Sekunden (1 Stunde) eingestellt. Du kannst diesen Wert anpassen, um die Wartezeit nach Bedarf zu ändern.

Die Verwendung der .htaccess-Datei für die Aktivierung des Wartungsmodus bietet in der Tat Vorteile in Bezug auf die Konformität und das Management von potenziellen Fehlern. Hier sind einige Gründe, warum dies bevorzugt werden könnte:

  1. Einfache Konfiguration: Die Konfiguration des Wartungsmodus über die .htaccess-Datei ist in der Regel einfach und erfordert nur wenige Zeilen Code. Dies erleichtert die Wartung und Aktualisierung.
  2. Konformität und Sicherheit: Durch die Nutzung der .htaccess-Datei auf Serverebene kannst du sicherstellen, dass der Wartungsmodus unabhängig von der Anwendungslogik aktiviert wird. Dies kann in bestimmten Situationen, insbesondere bei schwerwiegenden Fehlern oder Sicherheitsproblemen, von Vorteil sein.
  3. Keine PHP-Fehlermeldungen: Indem die PHP-Fehlermeldungen in der wartungsmodus.php-Datei deaktiviert werden, wird verhindert, dass Fehlerdetails im Browser angezeigt werden. Dies trägt zur Sicherheit bei, da mögliche Angreifer weniger Informationen erhalten.
  4. Einfache Aktivierung/Deaktivierung: Die Aktivierung oder Deaktivierung des Wartungsmodus über die .htaccess-Datei kann schnell und einfach erfolgen, entweder indem die Zeilen im Konfigurationsfile hinzufügt, entfernt oder deaktiviert werden. Dies ist besonders nützlich in Notfällen oder bei kurzfristigen Wartungsarbeiten.
  5. Separation of Concerns: Die Verwendung der .htaccess-Datei ermöglicht eine klare Trennung von Serverkonfiguration und Anwendungslogik. Dies kann die Wartung und Fehlerbehebung erleichtern, vornehmlich wenn mehrere Entwickler an der Anwendung arbeiten.
  6. Individuelle Steuerung: Die Anpassung auf individueller Ebene erfolgt in der .htaccess durch das Hinzufügen mehrere IP-Adressen zulassen.
  7. Cache-Management im Zusammenhang mit dem Wartungsmodus über die .htaccess.
  • "In Verbindung mit einem Cache-Plugin sollte nach dem Aktivieren des Wartungsmodus und dem anschließenden Zurücksetzen des Modus der Cache gelöscht werden. Andernfalls könnte die Website im Wartungsmodus für Besucher weiterhin gecached werden. Dies betrifft sämtliche Seiten, die während des Wartungsmodus von Besuchern aufgerufen wurden oder für die der Cache automatisch neu erstellt wurde."

Im Kontext des Wartungsmodus über die .htaccess entfällt die Notwendigkeit eines umfassenden Cache-Managements. Im Gegensatz zu Cache-Plugins, die speziell für die Verwaltung von Cache-Daten in WordPress entwickelt wurden, ist der Wartungsmodus über die .htaccess direkt auf Serverebene aktiv.

Die .htaccess-basierte Implementierung des Wartungsmodus sperrt den Zugriff auf die Website und leitet die Anfragen direkt zur Wartungsseite um. Da keine dynamischen Inhalte erzeugt werden, müssen weder Cache-Plug-ins der Cache noch der Browsercache individuell gelöscht werden. Das Deaktivieren des Wartungsmodus führt sofort zur Wiederherstellung der normalen Website-Anzeige, ohne dass zusätzliche Maßnahmen erforderlich sind.

Die klare Struktur und Direktheit des Wartungsmodus über die .htaccess machen ihn zu einer effizienten und serverseitigen Lösung, die eine nahtlose Aktivierung und Deaktivierung ohne umfassendes Cache-Management ermöglicht.

Nachteil des vollständigen Zugriffsausschlusses

Die Vollständige Sperrung: Wenn der Wartungsmodus über die .htaccess aktiviert wird, sind alle Besucher und Benutzer, einschließlich derjenigen, die zuvor die Website besucht und Inhalte im Browsercache gespeichert haben, von einem Zugriff ausgeschlossen.

Der Wartungsmodus sollte generell zeitnah deaktiviert werden, sobald die Arbeiten abgeschlossen sind, um sicherzustellen, dass die Website wieder normal zugänglich ist und keine negativen Auswirkungen auf das Ranking hat.


Insgesamt bietet die Verwendung der .htaccess-Datei eine robuste und konforme Methode zur Steuerung des Wartungsmodus und zum Schutz vor potenziellen Problemen.

Beispiel wie das von Wartungsmodus, öffnet in neuem Tab.

Funktion des .htaccess-Wartungsmodus

Die Auswirkungen des Wartungsmodus auf die SEO-Strategie sollten berücksichtigt werden, um sicherzustellen, dass Suchmaschinen die Seite während dieser Zeit angemessen behandeln. Im Kontext des .htaccess-Wartungsmodus möchten wir nun den Aspekt der Weiterleitung beleuchten.

Beiden Varianten ist in der wartungsmodus.php der folgende Eintrag die Bedingung:

  • <meta name="robots" content="noindex, nofollow">

Es ist zu beachten, dass Suchmaschinen unterschiedlich interpretieren können, wie sie mit temporären Umleitungen und Noindex-Anweisungen umgehen.


Im Folgenden geht es um zwei Varianten! Schau dir mal die zwei an – einmal mit Umleitungsoption und dann ohne. Besonders die ohne Umleitungsoption bringt uns den coolen Statuscode 503. Das lohnt sich anzusehen, um den Kontext besser zu verstehen!

Variante mit Umleitungsoption [L,R=307]

RewriteRule ^(.*)$ /wartungsmodus.php [L,R=307]

  • Die Regel leitet die Anfrage von der ursprünglichen URL direkt auf die Wartungsmodusseite (/wartungsmodus.php). Dabei wird der Statuscode 307 ([L,R=307]) mitgesendet.
  • In der Adresszeile wird konkret die /wartungsmodus.php angezeigt.

wartungsmodus

  • Beachte jedoch, dass die ursprüngliche URL sich nach Beendigung des Wartungsmodus nicht automatisch lädt.
  • Der noindex-Eintrag im HTML verhindert, dass die wartungsmodus.php indexiert wird.

Es ist dieser Variante eine klare Trennung zwischen der normalen Betriebsphase und dem Wartungsmodus. Die Wartungsseite mit der eigenen URL ist eine gute Praxis. Der noindex-Eintrag verhindert, dass die wartungsmodus.php indexiert wird.

Die explizite Angabe eines Statuscodes, wie etwa 307 (temporäre Umleitung), stellt sicher, dass Suchmaschinen die Seite nicht nur aufgrund des noindex-Tags, sondern auch aufgrund des korrekten HTTP-Statuscodes als temporär nicht indexieren. Es ist eine zusätzliche Schutzmaßnahme und eine bewährte Praxis, um sicherzustellen, dass die Seite nicht irrtümlich indexiert wird. Daher wird empfohlen, wenn möglich, einen expliziten Statuscode in Verbindung mit dem noindex-Tag zu verwenden, um maximale Sicherheit zu gewährleisten.


Hinweis: Die Vorlage für die wartungsmodus.php beinhaltet auch das PHP zur automatischen Neuladung der Website. In dieser Variante kann das seine Aufgabe nicht erfüllen und kann daher entfernt werden.

Variante ohne Umleitungsoption

RewriteRule ^(.*)$ /wartungsmodus.php [L]

  • Die Regel leitet die Anfrage von der ursprünglichen URL auf die /wartungsmodus.php um.
  • In dieser Variante fehlt der explizite Statuscode (R=307), daher wird standardmäßig der Status 200 (OK) verwendet.
  • Dabei bleibt die ursprüngliche URL in der Adresszeile des Browsers erhalten und kann nach Beenden des Wartungsmodus geladen werden. In der wartungsmodus.php ist festgelegt, dass sich die Seite selbstständig nachladen kann.
  • Der noindex-Eintrag im HTML verhindert, dass die wartungsmodus.php indexiert wird.

Wartungsmodus

Beachte in dieser Variante, dass die Wartungsseite nicht automatisch mit einem spezifischen Statuscode (wie 307) signalisiert wird und die klare Trennung zwischen normaler Betriebsphase und Wartungsmodus nicht so deutlich ist wie bei der Verwendung eines spezifischen Statuscodes.

Die Herausforderung dieses Ansatzes besteht darin, dass der Statuscode 200 der Suchmaschine nicht explizit mitteilt, dass die Seite vorübergehend nicht verfügbar ist. Dadurch könnte die Suchmaschine versuchen, die Seite weiterhin zu indexieren, ohne zu erkennen, dass sie sich im Wartungsmodus befindet. Erst durch das noindex-Tag in der wartungsmodus.php wird signalisiert, dass die Seite nicht indexiert werden soll.

Im Vergleich zur Variante mit einem spezifischen HTTP-Statuscode könnte diese Methode weniger effektiv sein, da sie auf die Interpretation des noindex-Tags durch die Suchmaschine angewiesen ist, anstatt klare Anweisungen über den vorübergehenden Status der Seite zu geben.

  • Es geht auch anders, Status 503

Der Statuscode 503 (Service Unavailable) wird normalerweise verwendet, um anzuzeigen, dass der Server vorübergehend nicht verfügbar ist, oft aufgrund technischer Probleme wie Überlastung, Wartung oder Serverausfällen.

Wartungsmodus, Fehler 503 Service Unavailable.
Wartungsmodus, Fehler 503 Service Unavailable. … Kein Problem! Dies ist eher eine Eigenkreation aus der Probe aufs Exempel. – nur ein vorübergehender Zaubertrick!

Die Weiterleitung mit [L,R=503] würde ideal, da der Adresszeile die ursprüngliche URL erhalten bleibt und somit eine automatische Neuladung ermöglichte. Der Statuscode 503 ist jedoch für "Service Unavailable" reserviert, und daher würde in der .htaccess mit [L,R=503] die spezifische Seite "Service Unavailable" geladen, siehe Bild.

Suchmaschinenalgorithmen bevorzugen Seiten, die klare Signale für vorübergehende Unverfügbarkeit senden.

Die direkte Implementierung der Weiterleitung mit der Regel [L,R=503] in der .htaccess-Datei ist nicht möglich. Allerdings kann der Status 503 durch die Verwendung von PHP erreicht werden. Anstelle des Standard-Statuscodes 200 (OK) wird somit PHP dazu verwendet, den Statuscode 503 für die Ausgabe zu setzen.

Statuscode 503 ohne Umleitungsoption versenden!

Mithilfe von PHP wird den Suchmaschinen der Statuscode 503 übermittelt. Diese Funktionalität ist bereits im Code der Standardausstattung der wartungsmodus.php implementiert:

// Funktion für den Wartungsmodus
function get_mode()
{
    // Immer im Wartungsmodus
    return 503;
}
// Überprüfe den Wartungsmodus
if (get_mode() == 503) {
    // Setze den Statuscode auf 503
    http_response_code(503);
Redirekt-Checker, Wartungsmodus, Maintenance Mode
503 Service Unavailable, Redirekt-Checker (checker.org)

Wartungsmodus über .htaccess

Um den Wartungsmodus oder auch 'Maintenance Mode' genannt, für eine WordPress-Website vorzubereiten, folge diesen Schritten:

  1. Erstellen der wartungsmodus.php
  2. Ermitteln der eigenen IP-Adresse
  3. Die Regeln für die .htaccess-Datei

Schritt 1: Erstellen der wartungsmodus.php

Zuerst erstellen wir im Verzeichnis wordpress eine Datei namens wartungsmodus.php. Diese Datei wird auch die Inhalte der Wartungsseite enthalten.

Die Datei mit folgendem Code abspeichern:

<?php
// wartungsmodus.php

error_reporting(0); // Schaltet alle Fehlermeldungen aus
ini_set("display_errors", 0); // Verhindert die Anzeige von Fehlern im Browser

// Funktion für den Wartungsmodus
function get_mode()
{
    // Immer im Wartungsmodus
    return 503;
}

// Überprüfe den Wartungsmodus
if (get_mode() == 503) {
    // Setze den Statuscode auf 503
    http_response_code(503);

    // Setze den Retry-After-Header auf 3600 Sekunden (1 Stunde)
    header("Retry-After: 3600");

    // Lade alle 10 Sekunden zur aufgerufenen URL
    header("Refresh: 10; url=" . $_SERVER["REQUEST_URI"]);

    // Hier kannst du weitere Logik für die Wartungsfreigabe hinzufügen, wenn erforderlich
}
?>

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="robots" content="noindex, nofollow">
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            // Prüfe, ob die Seite durch einen direkten Aufruf oder einen Link innerhalb der Seite geladen wurde
            if (document.referrer === '' || document.referrer.includes(window.location.origin)) {
                // Verberge den Zurück-Button, da die Seite direkt oder durch einen internen Link aufgerufen wurde
                document.getElementById('zurueckButton').style.display = 'none';
            }
        });
    </script>
</head>
<body>
    <div style="text-align: center; padding: 50px;">
        <pre>

  _______                    ____         _              _        _ 
 |__   __|                  |  _ \       (_)            (_)      | |
    | | _   _  _ __    ___  | |_) |  ___  _  ___  _ __   _   ___ | |
    | || | | || '_ \  / _ \ |  _ <  / _ \| |/ __|| '_ \ | | / _ \| |
    | || |_| || |_) ||  __/ | |_) ||  __/| |\__ \| |_) || ||  __/| |
    |_| \__, || .__/  \___| |____/  \___||_||___/| .__/ |_| \___||_|
         __/ || |                                | |                
        |___/ |_|                                |_|                
																		 
        </pre>
        <h1>Die Website befindet sich im Wartungsmodus</h1>
        <p>Wir arbeiten daran und sind bald wieder online. Vielen Dank für dein Verständnis.</p>
        <p><input type="button" value="Zurück" onClick="javascript:history.back()" id="zurueckButton"></p>
        <h2>Medieninhaber und Herausgeber</h2>
        <p>Projekt: Beispielprojekt</p>
        <p><b>Name</b><br />Max Mustermann</p>
        <p><b>Adresse</b><br />
        Musterstraße 123<br />
        12345 Musterstadt<br />
        Deutschland/Österreich/Schweiz</p>
        <p><b>E-Mail-Adresse</b><br />max.mustermann@example.com<br />
            <b>Telefon</b><br />Bitte kontaktieren Sie mich über E-Mail</p>
    </div>
</body>
</html>
  1. PHP-Teil:
    • Fehlermeldungen ausschalten:
      error_reporting(0);:Diese Funktion schaltet alle PHP-Fehlermeldungen aus, um sicherzustellen, dass keine Fehlerdetails auf der Webseite angezeigt werden.
    • Anzeige von Fehlern im Browserverhindern:
      ini_set('display_errors', 0);: Diese Anweisung verhindert die Anzeige von PHP-Fehlern im Browser, um eine saubere Benutzeroberfläche während des Wartungsmodus zu gewährleisten.
    • Funktion für den Wartungsmodus:
      function get_mode() {...}: Definiert eine Funktion, die den Wartungsmodus aktiviert und den HTTP-Statuscode 503 zurückgibt.
    • Überprüfung des Wartungsmodus:
      if (get_mode() == 503) {...}: Überprüft, ob der Wartungsmodus aktiv ist. Falls ja, werden die nächsten Anweisungen ausgeführt.
    • Setzen des HTTP-Statuscodes und Retry-After-Headers:
      • http_response_code(503);: Setzt den HTTP-Statuscode auf 503 (Service Unavailable).
      • header('Retry-After: 3600');: Setzt den Retry-After-Header auf 3600 Sekunden (1 Stunde), um den Browservorlauf zu steuern.
    • Automatisches Neuladen der Seite alle 10 Sekunden:
      header("Refresh: 10; url=" . $_SERVER['REQUEST_URI']);: Bewirkt, dass die Seite alle 10 Sekunden neu geladen wird. Dies ist nützlich, um Benutzer über Änderungen im Wartungsstatus auf dem Laufenden zu halten.
    • Zusätzliche Logik (optional):
      Hier können zusätzliche Anweisungen eingefügt werden, um spezifische Logik während des Wartungsmodus auszuführen, wenn dies erforderlich ist.
  2. HTML- und JavaScript-Teil:
    • noindex im <head>: Die Ergänzung eines noindex-Tags im <head>-Bereich während des Wartungsmodus ist eine Maßnahme, um zu vermeiden, dass die temporäre Wartungsseite von Suchmaschinen indexiert wird.
    • Der JavaScript-Code prüft, ob die Seite direkt aufgerufen wurde oder durch einen internen Link innerhalb der Seite. Falls ja, wird der Zurück-Button (zurueckButton) versteckt, da das Zurücknavigieren in diesem Fall nicht sinnvoll ist.
    • Der Rest des HTML-Teils enthält die eigentlichen Inhalte der Wartungsseite, einschließlich des Design ASCII-Art-Format 😉 , einer Meldung, einem Zurück-Button und Kontaktinformationen.
      • Mehr zum ꒰ ͜͡➸ ASCII-Art-Format ist im Anschluss zu sehen. – sozusagen zur Entspannung dann.

Schritt 2: Ermitteln der eigenen IP-Adresse

  • Ermittle zuerst die eigene IP-Adresse, bevor die Regeln für die .htaccess-Datei erstellt werden. Die IP wird gebraucht, um sicherzustellen, dass der Zugriff auf die Website im Wartungsmodus nur auf diese IP beschränkt ist.

Es ist zu beachten, dass sich die IP-Adresse eines Geräts ändern kann, insbesondere wenn es sich um eine dynamische IP-Adresse handelt. Die vom Internetdienstanbieter (ISP) zugewiesene IP-Adresse ändert sich häufig, daher ist dies zu berücksichtigen, um mögliche Ungereimtheiten zu verstehen.

Die aktuelle IP-Adresse kann über Online-Dienste überprüft werden. Es ist jedoch zu beachten, dass sich die IP-Adresse im Laufe eines Tages ändern kann.

https://www.whatsmyip.org/
https://www.dein-ip-check.de/
https://www.ionos.at/tools/ip-adresse
https://whatismyipaddress.com/de/meine-ip

Die dynamische IP-Adresse von einem Internetdienstanbieter (ISP) kann sich im Lauf eines Wartungsmodus ändern.

Verwendung von statischer IP?

Die Sicherheit einer statischen IP-Adresse im Kontext des Wartungsmodus hängt davon ab, wie gut diese geschützt ist. Statische IP-Adressen sind im Allgemeinen nicht geheim, da sie oft öffentlich zugänglich sind. Daher sollte die Verwendung von statischen IP-Adressen zur Steuerung des Zugriffs nicht als alleinige Sicherheitsmaßnahme betrachtet werden.

Schritt 3: Die Regeln für die .htaccess-Datei

Die folgenden Regeln basieren auf der Umleitung zur wartungsmodus.php unter Verwendung der entsprechenden IP.

Um nur der eigenen IP-Adresse normalen Zugriff zu gewähren und anderen Besuchern den Wartungsmodus anzuzeigen, wird folgende .htaccess-Regel verwendet:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# Überprüfe, ob die Wartungsseite existiert
RewriteCond %{DOCUMENT_ROOT}/wartungsmodus.php -f

# Überprüfe, ob die Anfrage von der spezifischen IP-Adresse stammt
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.012$

# Überprüfe, ob die Anfrage nicht bereits zur Wartungsseite führt
RewriteCond %{REQUEST_URI} !^/wartungsmodus\.php$

# Wenn alle Bedingungen erfüllt sind, leite die Anfrage zur PHP-Datei weiter
RewriteRule ^(.*)$ /wartungsmodus.php [L]

# Anpassen der Retry-After-Zeit nach Bedarf
Header always set Retry-After "3600"
</IfModule>

Das <IfModule mod_rewrite.c> ist eine Bedingung, die überprüft, ob das Apache-Modul mod_rewrite aktiviert ist, bevor es Rewrite-Regeln anwendet. Dies ist eine gute Praxis, um sicherzustellen, dass die Regeln nur angewendet werden, wenn das Modul verfügbar ist.

  • Wenn das Modul wieder zu deaktivieren ist, ist einfach die Direktive auf RewriteEngine Off innerhalb des <IfModule>-Blocks zu setzen.

Es ist zu beachten, dass das Deaktivieren der Rewrite Engine mit der Direktive RewriteEngine Off von der grundlegenden Serverkonfiguration abhängt. In einigen Serverumgebungen kann dies möglicherweise nicht wie erwartet funktionieren, abhängig von den erlaubten Servereinstellungen und der Konfiguration des Hosting-Anbieters. Wenn das Deaktivieren der Rewrite Engine nicht die gewünschten Ergebnisse liefert, können diese Regeln durch das Hash-Symbol (#) auskommentiert werden.

Wartungsmodus testen

Um den Wartungsmodus nur für die eigene IP-Adresse anzuzeigen, sollte

  • RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.123$ der !Operator vor der IP-Adresse entfernt werden, also
  • RewriteCond %{REMOTE_ADDR} ^123\.456\.789\.123$.

Damit können alle Besucher die Website besuchen, während der Wartungsmodus nur für die eigene IP-Adresse angezeigt wird. Dies kann nützlich sein, um den Wartungsmodus zu testen, also:

RewriteCond %{REMOTE_ADDR} ^123\.456\.789\.123$
  • Wenn die Regel RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.123$ aktiv ist, bedeutet das, dass der Wartungsmodus aktiviert wird, wenn die IP-Adresse NICHT mit der angegebenen IP übereinstimmt. In diesem Fall wird der Wartungsmodus nur angezeigt, wenn du NICHT von der angegebenen IP aus zugreifst.
    • Das ist auch zu testen, indem du einfach die IP-Adresse in der Regel veränderst.
  • Wenn die Regel RewriteCond %{REMOTE_ADDR} ^123\.456\.789\.123$ aktiv ist, bedeutet das, dass der Wartungsmodus aktiviert wird, wenn die IP-Adresse mit der angegebenen IP übereinstimmt. In diesem Fall wird der Wartungsmodus nur angezeigt, wenn du von der angegebenen IP aus zugreifst. Dies kann zum Testen des Wartungsmodus gut sein.

Wenn mehreren Benutzern der Zugriff auf die Website gewährt bleiben soll, dann:

RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.123$ [OR]
RewriteCond %{REMOTE_ADDR} !^111\.222\.333\.444$ [OR]
RewriteCond %{REMOTE_ADDR} !^222\.333\.444\.555$

Dies bedeutet, dass der Wartungsmodus aktiviert wird, wenn die IP-Adresse des Benutzers nicht einer der drei angegebenen IP-Adressen entspricht. Beachte, dass die [OR]-Verknüpfung sicherstellt, dass mindestens eine der Bedingungen erfüllt sein muss.

Hinweis: Die Verwendung von [OR] in den RewriteCond-Anweisungen dient dazu, eine ODER-Verknüpfung zwischen den einzelnen Bedingungen herzustellen. Wenn kein [OR] vorhanden ist, wird standardmäßig eine UND-Verknüpfung verwendet.

Ohne [OR] würden alle Bedingungen gleichzeitig erfüllt sein müssen, damit die RewriteRule angewendet wird. Das bedeutet, dass die IP-Adresse des Benutzers gleichzeitig nicht den ersten, nicht den zweiten und nicht den dritten Einträgen entsprechen müsste. In den meisten Fällen, wenn du mehrere IPs überprüfen möchtest und es ausreicht, dass mindestens eine Bedingung zutrifft, verwendest du [OR] für die ODER-Verknüpfung.

Illustration von Elionas2 und Engin_Akyurt

Für den ultimativen Wartungsmodus-Flair empfehlen wir, ein kleines Notizzettelchen an den Computerbildschirm zu heften. So vergisst du garantiert nicht, den Wartungsmodus zu deaktivieren – es sei denn, du genießt die Gesellschaft der "Wartungsmodus-Meldung" mehr als die deiner eigenen Website!" 😄

Sowieso in Empfehlung WP Dashboard Notes:

Oder, oder und in der …

Admin-Toolbar:
Benachrichtigung bei Wartungsmodus

Zur Benutzerfreundlichkeit während eines Wartungsmodus, kann folgend eine Benachrichtigung in der Admin-Toolbar implementiert werden. Diese Benachrichtigung wird nur angezeigt, wenn der Wartungsmodus aktiviert ist, und bietet eine klare Anzeige für Administratoren, dass gerade Wartungsarbeiten durchgeführt werden.

Im folgenden Code und den Erläuterungen zeigen wir, wie dies mit einem einfachen Code-Snippet erreicht werden kann.

functions.php

/* Admin-Toolbar: Benachrichtigung bei Wartungsmodus */
function anzeigen_wartungsmodus_benachrichtigung() {
    // Überprüfe, ob die .htaccess-Datei den Wartungsmodus aktiviert
    $htaccess_inhalt = file_get_contents(ABSPATH . '.htaccess');
    $wartungsmodus_aktiv = !preg_match('/#.*RewriteCond %{DOCUMENT_ROOT}\/wartungsmodus.php -f/', $htaccess_inhalt);

    // Überprüfe, ob der Wartungsmodus aktiviert ist
    if ($wartungsmodus_aktiv) {
        // Wartungsmodus ist aktiviert
        global $wp_admin_bar;
        $wp_admin_bar->add_menu(array(
            'id'    => 'wartungsmodus-benachrichtigung',
            'title' => '<span class="ab-icon dashicons dashicons-warning"></span> Wartungsmodus ist aktiviert!',
            'meta'  => array(
                'class' => 'wartungsmodus-benachrichtigung',
            ),
        ));
    }
}

add_action('admin_bar_menu', 'anzeigen_wartungsmodus_benachrichtigung');

Dieser Code-Abschnitt ermöglicht die Anzeige einer Benachrichtigung in der WordPress Admin-Toolbar, wenn der Wartungsmodus aktiviert ist. Der Code überprüft die .htaccess-Datei auf die spezifische Regel:

  • RewriteCond %{DOCUMENT_ROOT}/wartungsmodus.php -f

Diese Regel steuert den Wartungsmodus. Wenn die Regel vorhanden ist und nicht auskommentiert wurde, wird die Benachrichtigung in der Toolbar angezeigt. Dies bietet eine visuelle Bestätigung für den aktiven Wartungsmodus und informiert Administratoren über den gegenwärtigen Status der Website.


Hier haben wir das Thema Wartungsmodus auch schon mal angeschnitten: WordPress Maintenance der Wartungsmodus.

Plug-in für den Wartungsmodus

Ein performanter Wartungsmodus und „Kommt bald“-Seite, die das Standard-WordPress-Markup benutzt, ohne Werbung oder kostenpflichtige Upgrades. Für normalen Wartungsmodus ist das Plug-in wärmstens zu empfehlen.

Das Plug-in ist neben der direkten Beschreibung auch sehr gut hervorgehoben im Titel Warum der WordPress Wartungsmodus sinnvoll ist.

Maintenance Mode

Der Autor des Plug-ins weist im Besonderen hin:

Wichtig! Benutzer, die Cache-Plugins verwenden:
Vergessen Sie nach Deaktivieren des Wartungsmodus nicht, Ihren Cache zu leeren!

In Anwendung eines Cache Plug-in ist nach aktivieren des Wartungsmodus und dessen zurückstellen der Cache zu löschen. Andernfalls könnte dem Besucher weiterhin die Website in ihrer vorherigen Einstellung mit aktiviertem Wartungsmodus angezeigt werden.


Den Einstellungen unter "Erweiterte Einstellungen" ist eventuell das JavsScript von Nutzen:

<script>
    // JavaScript zur Neuladung der Seite nach einer Verzögerung von 10 Sekunden
    setTimeout(function () {
        location.reload();
    }, 10000); // Warte 10 Sekunden (10000 Millisekunden) vor der Neuladung
</script>

Wie der Vorlage, somit ladet die Seite dann automatisch immer wieder mal nach und nach dem Deaktivieren des Wartungsmodus ist die Website automatisch visuell. – ebenda, es soll schon Wunder gegeben haben. 😀

Wenn auch so Zurück-Button dabei sein sollte, so ist das im Content des Wartungsmodus:

<p><input type="button" value="Zurück" onClick="javascript:history.back()" id="zurueckButton"></p>

ASCII-Art

Hier folgt ein kleiner Ausflug in die Welt der ASCII-Art ʕ•́ᴥ•̀ʔっ, der sich aus der Vorlage für den Wartungsmodus ergeben hat.

Um sicherzustellen, dass die Zeichnung auf der Website korrekt angezeigt wird, sollten HTML-Zeilenumbrüche verwendet werden. Der <pre>-Tag wird normalerweise für vorformatierten Text genutzt und bewahrt Leerzeichen und Zeilenumbrüche. Dadurch wird sichergestellt, dass die ASCII-Art-Zeichnung die gewünschte Form behält und ordnungsgemäß dargestellt wird.

            .--.   _
             .---|__| .((\=.
          .--|===|--|/    ,(,
          |  |===|  |\      y
          |%%|   |  | `.__,'
          |%%|   |  | /  \\\
          |  |   |  |/|  | \`----.
          |  |   |  ||\  \  |___.'_
         _|  |   |__||,\  \-+-._.' )_
        / |  |===|--|\  \  \      /  \
hjw    /  `--^---'--' `--`-'---^-'    \
      '================================`

Für diejenigen, die mit ASCII-Art nicht vertraut sind, bietet die Wikipedia einen kurzen Einblick ASCII-Art.

Es gibt auch zahlreiche Online-Quellen mit schönen ASCII-Art-Vorlagen. Einige Anpassungen könnten jedoch erforderlich sein. Hier sind einige Beispiele:

ℍ𝕒𝕝𝕝𝕠 𝔸𝕊ℂ𝕀𝕀-𝔸𝕣𝕥

┊┊╭━╮┊┊┊┊┊┊┊┊┊┊┊
━━╋━╯┊┊┊┊┊┊┊┊┊┊┊
┊┊┃┊╭━┳╮╭┓┊╭╮╭━╮
╭━╋━╋━╯┣╯┃┊┃╰╋━╯
╰━╯┊╰━━╯┊╰━┛┊╰━━

꒰ ͜͡➸ Willkommen bei Messletters (messletters.com)

Unter anderem Picture to ASCII Art Converter (sketchmypic.com) – Eigenes Bild konvertieren …

zeitmaschine, gifzentrale.com

〷◠‿◠〷 Der Beitrag wurde mit fachlicher Unterstützung erstellt.

Der Beitrag wurde mit fachlicher Unterstützung erstellt.


Aktualisiert im Jahr 2024-April