WordPress-Multisite: Durch NOBLOGREDIRECT verursachte Soft 404-Fehler vermeiden

compass 933203 1280
Quelle: Pixabay

In einer WordPress-Multisiteumgebung würde, selbst wenn die Registrierung neuer Sites gesperrt ist, beim Aufruf einer nicht verfügbaren Subdomain automatisch auf die Registrierungsseite weitergeleitet. Dort erfährt ein Besucher dann, dass der Administrator die Registrierung nicht aktiviert hat. Um diese wenig hilfreiche Seitengasse zu vermeiden, kann man in der wp-config.php festlegen, dass der Aufruf einer nicht als Subsite erreichbaren Subdomain automatisch auf die Hauptsite leitet.

/* do not load wp-signup.php automatically*/
define( 'NOBLOGREDIRECT', 'http://hauptsite.tld' );

In der Folge werden jedoch auch nicht mehr vorhandene Inhalts-Seiten und -Beiträge mit dem Statuscode 302 Temporary Redirect auf die Hauptseite umgeleitet. Problem: Suchmaschinen erfahren auf diese Weise nicht, dass ein mittlerweile entfernter Inhalt (Statuscode 404 – nicht gefunden oder Statuscode 410 – entfernt) nicht länger im Index vorzuhalten ist.

Die Lösung besteht aus einem kleinen Plugin (es braucht kein Verzeichnis, einfach nur eine Datei).

<?php
/*
Plugin Name:    Prevent 302 redirects 
Description:    Use in MU with NOBLOGREDIRECT defined
Author:         Gabriele Laesser
Author URI:     https://gby.at
*/

/******************************************
 * use in MU with NOBLOGREDIRECT defined
 * to prevent unwanted 302 redirects
 * upload to wp-content/mu-plugins
 ******************************************/
remove_action( 'template_redirect', 'maybe_redirect_404' );

Dieses unter dem (üblicherweise) Verzeichnis wp-content in ein Verzeichnis (das vielleicht da ist, andernfalls angelegt werden muss) mu-plugins übertragen. Es wird dort automatisch global angewendet.

3 Antworten zu „WordPress-Multisite: Durch NOBLOGREDIRECT verursachte Soft 404-Fehler vermeiden“

  1. Andreas Beer

    Ich habe schon vor Dankbarkeit für diese Lösung gejubelt, aber dann kam das: <code>Warning: Cannot modify header information – headers already sent by (output started at /www/htdocs/w00d4f54/wp-content/mu-plugins/prevent-302.php:1) in /www/htdocs/w00d4f54/wp-login.php on line 431</code> und eine Blockierung der für das Einloggen notwendigen Cookies.

    1. Gabriele Lässer

      Es könnte sein, dass der Editor mit dem die Datei bearbeitet wurde, diese falsch codierte (UTF-8 mit BOM). Es sollte UTF-8 ohne BOM oder ANSI sein. Gerne von einer Fehlcodierung betroffen ist auch die wp-config.php, nachdem sie mit einem ungeeigneten (oder ungeeignet konfigurierten) Editor bearbeitet wurde. Bei Domainmapping habe ich auch schon gesehen, dass eine Site mit www installiert, aber ohne www gemapped worden war (oder umgekehrt). Das ist behebbar, ohne dass auf die Lösung verzichtet werden muss.

      1. Andreas Beer

        Nee, das war es nicht. Mit dieser Erweiterung klappt es.
        if (!headers_sent()) {
        remove_action('template_redirect', 'maybe_redirect_404');
        }

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar zu Andreas Beer Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable