robots.txt für bestimmte Sites einer Multisite anpassen

Die robots.txt einer WordPress-Site wird normalerweise dynamisch generiert. Um die in einer normalen Einzelinstallation zu überschreiben, kann einfach eine statische robots.txt erstellt und auf den Server geladen werden – in einer Multisite würde diese Datei dann aber für alle Seiten gelten, was nicht unbedingt gewünscht ist. Dieser Artikel zeigt euch, wie ihr die robots.txt für einzelne Sites der Multiste anpassen könnt.

Für die dynamisch erzeugte robots.txt gibt es den Filter robots_txt, über den die Ausgabe angepasst werden kann. Mit get_current_blog_id() bekommen wir die aktuelle Site-ID und können anschließend auf bestimmte Sites der Multisite-Installation testen, um Regeln nur für diese Sites auszugeben. Das sieht beispielsweise aktuell für meiner Site so aus:

/**
 * Modify robots.txt for main site and english site
 *
 * @param $output
 * @param $public
 *
 * @return string
 */
function fbn_custom_robots( $output, $public ) {
	$site_id = get_current_blog_id();
	if ( $site_id == 1 ) {
		$output .= "Disallow: /agb-und-widerruf/n";
		$output .= "Disallow: /mein-konto/n";
		$output .= "Disallow: /warenkorb/n";
		$output .= "Disallow: /impressum-und-datenschutz/n";
	} elseif ( $site_id == 11 ) {
		$output .= "Disallow: /account/n";
		$output .= "Disallow: /cart/n";
		$output .= "Disallow: /imprint/n";
		$output .= "Disallow: /terms/n";
	}

	return $output;
}

add_filter( 'robots_txt', 'fbn_custom_robots', 20, 2 );

Für die Site mit der ID 1 (das ist die Site florianbrinkmann.com) werden vier Disallow-Regeln eingefügt, ebenso für die Site mit der ID 11 (meine englischsprachige Site en.florianbrinkmann.com).

Um die Site-IDs herauszubekommen, habe ich einfach folgende Zeile nach $site_id = get_current_blog_id(); eingefügt:

$output .= $site_id;

So wird beim Aufruf der beiden robots.txt-Dateien der gewünschten Sites die ID angezeigt, auf die anschließend geprüft werden kann.

Das könnte auch interessant sein

8 Kommentare zu »robots.txt für bestimmte Sites einer Multisite anpassen«

      1. Josef

        Hallo Flo,
        thx für deine Anleitung. Funktioniert auch bei mir. Habe meine ellenlange Datei per include() in die functions.php meines Themes eingehängt.

        Gruss
        Josef

        Antworten
          1. Florian Brinkmann

            Hallo Josef,

            brauchst du die Sitemaps von Jetpack denn? Sonst könntest du die Sitemaps-Funktion von Jetpack über die Plugin-Einstellungen deaktivieren.

            Viele Grüße
            Florian

          2. Josef

            Danke für
            "Sitemaps-Funktion von Jetpack über die Plugin-Einstellungen deaktivieren"
            Habe das im Jetpack erst jetzt bemerkt.

Schreibe einen Kommentar zu Florian Brinkmann Antworten abbrechen

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