wake-up-neo.net

Leiten Sie die gesamte Website auf eine einzelne Seite um

Ich muss eine ganze WordPress-Site auf eine einzige WordPress-Seite umleiten. Eine Art Wartungsmodus, aber die Weiterleitung muss zu einer veröffentlichten WordPress-Seite gehen. Leider muss die Wartungsseite, die ich anzeigen muss, andere WordPress-Plugins verwenden.

Mir ist kein Wartungsmodus-Plugin bekannt, mit dem Sie dies tun können. Sie können höchstens benutzerdefinierten HTML/CSS-Code schreiben.

Ich habe über eine .htaccess mod_rewrite-Regel nachgedacht. Allerdings bin ich mit mod_rewrite sehr schwach.

Erstens habe ich kanonische Weiterleitungen deaktiviert .

Dann habe ich versucht, zu verwenden:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php?page_id=813$
RewriteRule ^(.*)$ /index.php?page_id=813 [R=307,L]

Diese Regeln generieren jedoch Umleitungsschleifen. page_id=813 ist natürlich die ID meiner Wartungsseite.

Kennt jemand ein Wartungsmodus-Plugin, das auf eine veröffentlichte Seite weiterleitet?

Kann mir alternativ jemand helfen, die mod_rewrite-Regeln zu korrigieren? Ein großes Lob, wenn wir /wp-admin nicht in die Weiterleitungsregeln aufnehmen können.

10
dgraziotin

Sie können dies in WordPress selbst tun, anstatt sich eine verwirrende und überarbeitete .htaccess-Korrektur einfallen zu lassen.

Wir können uns in den template_redirect-Filter einhängen, der nur auf dem Front-End ausgelöst wird (nicht in wp-admin). Wir verwenden dann die Funktion is_page(), um zu überprüfen, ob eine Seite mit der ID 813 angezeigt wird. Wenn nicht, leiten Sie mit der Funktion wp_redirect() zu dieser Seite weiter.

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ) );
    exit;
} );

Dies eignet sich hervorragend für einen Wartungsmodus, da die Weiterleitung über den 'temporären' HTTP-Header 302 erfolgt und Bots und Suchmaschinen wissen, dass Ihre Website bald verfügbar sein wird. Wenn Sie die Site jedoch permanent verschieben, möchten Sie möglicherweise einen 'permanenten' 301-HTTP-Header für die Umleitung verwenden. Sie können dies tun, indem Sie der Funktion wp_redirect einen zweiten Parameter hinzufügen. Beispiel:

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ), 301 );
    exit;
} );
15
shea

Ich habe die akzeptierte Antwort von @shea in ein One-File-Plugin eingebettet und zwei Optionen hinzugefügt: Nur Nicht-Administrator-Benutzer umleiten und auf eine beliebige URL umleiten.

Bei Interesse können Sie das Plugin von Github =>https://github.com/Idearia/wp-redirect-website-to-urlherunterladen.

Optionen

Die Plugin-Optionen sind sehr einfach; Derzeit sind sie in der Plug-in-Datei fest codiert. Ich kann jedoch in Betracht ziehen, eine Optionsseite zu erstellen, wenn andere Benutzer dies anfordern:

  • DESTINATION_URL : Die vollständige URL, an die Benutzer umgeleitet werden sollen. kann eine Seite außerhalb der Website-Domain sein.
  • DESTINATION_URL_ID : Wenn die Weiterleitungs-URL eine WordPress-Seite oder ein WordPress-Beitrag ist, geben Sie hier ihre WordPress-ID an.
  • USER_CAPABILITY : Benutzer mit dieser Funktion werden nicht umgeleitet. leer lassen, um alle umzuleiten; Die Standardeinstellung lautet 'manage_options' und ist für Benutzer mit Administratorrechten aktiviert.
  • REDIRECT_STATUS_CODE : Umleitungsstatus: 302 für temporäre Umleitung, 301 für permanente Umleitung.
  • DEBUG: Gibt an, ob Debuginformationen in debug.log ausgegeben werden sollen.

Aktualisierte Informationen auf der Github-Seite => https://github.com/Idearia/wp-redirect-website-to-url .

Bitte beachten Sie, dass das Plugin sehr einfach ist. Fortgeschrittene Benutzer könnten stattdessen eines der vielen Wartungs-Plugins in Betracht ziehen, die im WordPress.org-Plugin-Repository verfügbar sind.

Lassen Sie mich wissen, wenn Sie Probleme beim Ausführen des Plugins haben ????

Ich würde mich für eine viel einfachere Lösung entscheiden. Ich gehe davon aus, dass Sie nur möchten, dass nur eine Seite angezeigt wird - es muss keine WP Seite sichtbar sein -, damit Ihre Domain angefordert wird.

Warum also nicht eine HTML-Seite erstellen, diese mit CSS formatieren und diese Seite in einem anderen Ordner auf Ihrer Hosting-Plattform ablegen? Stellen Sie sicher, dass die Seite wie gewünscht aussieht.

Zeigen Sie dann einfach mit Ihrer Domain auf diesen neuen Ordner. Bei den meisten Hosting-Plattformen können Sie den Basisordner einer Domain angeben. Zeigen Sie also mit Ihrer Domain auf diesen neuen Basisordner. Es sind keine komplizierten htaccess-Weiterleitungen oder WP Plugins oder speziellen Filter zum Einbinden in WP erforderlich.

Sie können auch den gesamten Inhalt aus dem aktuellen Domänenstammordner verschieben und an seiner Stelle Ihre einfache HTML-Datei einfügen.

Hosting-Sites können außerdem eine globale Weiterleitung für jede Anfrage auf eine Seite Ihrer Domain einrichten.

In beiden Fällen ist es eine einfache Lösung, wenn Sie nur eine Seite für Ihre gesamte Domain benötigen.

Wenn Sie wirklich eine htaccess-Lösung wünschen, verwenden Sie diese:

RewriteEngine on

RewriteRule ^(.*)$ http://www.example.com/  [R=permanent,L]

..ersetzen mit Ihrer eigentlichen Domain. Macht SEO auch glücklich.

0
Rick Hellewell