# Don't forget to turn on the rewrite engine
RewriteEngine on
# Maintenance Redirection
# Replace 555\.555\.555\.555 with your own IP address
# Uncomment first conditional to turn off the redirection
# RewriteCond %{REQUEST_URI} ^$a
RewriteCond %{REQUEST_URI} !maintenance.html
RewriteCond %{REQUEST_FILENAME} !(styles|images).+$
RewriteCond %{REMOTE_ADDR} !^555\.555\.555\.555$
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteRule (.*) /maintenance.html [R,L]
Dieser Code macht es einfach, eine Website vorübergehend für Updates abzuschalten. Ersetzen Sie die Zeile "555" durch Ihre eigene IP-Adresse, damit Sie die Website weiterhin normal anzeigen können, während alle anderen weitergeleitet werden. Bilder und Stile dürfen das Filter ebenfalls passieren.
Die erste auskommentierte Bedingung ist so konzipiert, dass sie jedes Mal fehlschlägt. Das Ausschalten dieser Weiterleitung ist also so einfach wie das Auskommentieren dieser Zeile.
Gibt es eine Möglichkeit, nur eine Seite der Website für die Wartung abzuschalten, anstatt der gesamten?
Sicher, Sie könnten einfach eine weitere Bedingung am Anfang hinzufügen (nach der Zeile "^\$a")
RewriteCond %{REQUEST_URI} /url/to/match.html
Schlechte Sache ist, dass alle verlinkten Dateien von maintenance.html ebenfalls blockiert werden, z. B. CSS/JS-Dateien. Gibt es eine Möglichkeit, dort Ausnahmen zu machen, oder sollte ich in diesem Fall Inline-Styles verwenden?
Ich muss während der Wartung mehr als eine IP-Adresse zulassen. Wie mache ich das?
Warum fügen Sie nicht einfach eine weitere Zeile hinzu, wie
Ich bin kein Experte für .htacess... aber versuchen Sie es.
Wenn Sie während der Ausfallzeit Zugriff über mehr als eine IP-Adresse benötigen (z. B. 555.555.555.555 und 444.444.444.444), versuchen Sie Folgendes:
RewriteCond %{REMOTE_ADDR} !^[555.555.555.555|444.444.444.444]$
Was bedeuten die Zahlen (127...) in der zweiten REMOTE_ADDR?
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
Ersetze ich sie durch etwas Spezifisches für meine Website?
Danke!
Die Zahl (127.0.0.1) ist die IP-Adresse des lokalen Hosts
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$Sie müssen die Zeile mit den Zahlen (555) mit der IP-Adresse des Rechners ändern, von dem aus Sie auf die Website zugreifen. (Suchen Sie nach "what's my ip", wenn Sie Ihre nicht kennen.)
Das Einzige, was ich dem obigen Code hinzufügen würde, ist sicherzustellen, dass die Weiterleitung temporär ist.
RewriteRule $ /maintenance.html [R=307,L]Es ist sinnlos, die eigene IP-Adresse anzuschauen, es sei denn, Sie haben von Ihrem Internetanbieter eine statische IP-Adresse gekauft? Sobald Sie sich ab- und wieder anmelden, kann Ihnen eine völlig andere IP zugewiesen werden.
Wenn Sie eine live geschaltete Website haben, auf der dies funktionieren soll, müssen Sie die Datei von Ihrem Live-Server abrufen, bearbeiten und neu hochladen, da Ihre Live-Website eine statische IP-Adresse zugeordnet hat.
Ich hoffe, das hilft.
@jamie paterson Wenn Sie keine statische IP-Adresse haben, wissen Sie das wahrscheinlich bereits und verstehen, dass es nicht funktioniert, wenn Sie sich neu verbinden. Außerdem, wenn es nur vorübergehend ist, wird die Person vielleicht nicht wieder verbunden, bevor die Wartung abgeschlossen ist.
Hier ist der Code, den ich habe
RewriteCond %{REQUEST_URI} ^$a
RewriteCond %{REQUEST_URI} !downloads.php
RewriteCond %{REQUEST_FILENAME} !(css|images).+$
RewriteCond %{REMOTE_ADDR} !^555\.555\.555\.555$
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteRule (.*) /main/downloads.php [R,L]
Der Code funktioniert nicht. Ich habe die auskommentierte Zeile von der ersten Zeile entfernt, aber ich werde trotzdem auf die nicht verfügbare Seite weitergeleitet.
Gibt es etwas, das ich bei der Verwendung dieses Ansatzes beachten sollte? Werde ich langfristig SEO-/Google-Ranking-Probleme haben, wenn ich das tue? Bitte beraten Sie mich. Vielen Dank.
Sie könnten dies ganz einfach tun, um eine Website vorübergehend in Ihrer htaccess zu schließen (zumindest ist das, was ich benutze)
Wie kann ich allen Benutzern die Wartungsseite anzeigen lassen, aber meine eigene öffentliche IP-Adresse der Website zulassen, zum Beispiel suppose example.com soll zu Wartung gehen, aber
seine öffentliche IP sollte zur Website gehen, wie sie ist.
Ist das möglich? Bitte lassen Sie mich den Code wissen.
Um benutzerdefinierte Schriftarten und CSS auf meiner Wartungsseite zu verwenden, habe ich den Code modifiziert, meine Server-IP und die Dateityperweiterungen hinzugefügt, wie folgt:
Korrigiert. Keine Notwendigkeit für die Server-IP.
Ich habe vor etwa einem Jahr ein .htaccess-Skript mit einer HTML-Seite und einer externen CSS-Datei erstellt, das die IP-Ausnahme bietet, und seitdem IPv6-Unterstützung hinzugefügt, da meine externe IP-Adresse als solche angezeigt wurde.
Vor kurzem habe ich dieses Mini-Projekt erneut besucht und einige Kommentarplatzierungen behoben, die zu Apache-Fehlern führten. Das Skript funktionierte wieder großartig, aber ich entdeckte ein Problem mit IPv6 und Routern. Jeder Computer erhält eine andere IPv6-Adresse, und wenn Sie eine Google-Suche nach der IP-Adresse jedes Rechners durchführen, werden Sie feststellen, dass sie alle unterschiedlich sind. Das hat mich einiges an Überlegung und Kopfzerbrechen gekostet, warum mein Hauptcomputer die Live-Site anzeigen sollte, aber mein iPhone über WLAN immer die Wartungsseite angezeigt bekam.
Offensichtlich, wenn Sie mit einem Team im selben Netzwerk arbeiten, muss jedes Mitglied seine IP-Adresse überprüfen oder sich im Router anmelden, um dies herauszufinden.
Ich habe es in einem GitHub-Repository und erwähne das Problem auch dort. Hoffentlich hilft das jemandem, ernsthafte Fehlersuche zu vermeiden.
https://github.com/jcgallaher/website-maintenance-mode