Hooks und Filter | PHP | SEO

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

compass 933203 1280

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.

weiter schmökern

3 Comments

  1. 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. 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.

Schreibe einen Kommentar

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden.

Deine E-Mail-Adresse wird nicht veröffentlicht.