Einträge zur virtuellen robots.txt von WordPress ohne Plugin hinzufügen

Die virtuelle robots.txt von WordPress kann man natürlich auch ohne Plugin erweitern. Wie man die robots.txt mittels eines Plugins bearbeitet, habe ich schon in dem Artikel Die robots.txt Datei von WordPress bearbeiten beschrieben. Zum Anlegen der virtuellen robots.txt nutzt WordPress die Funktion do_robots().

In der WordPress Version 4.2.2 finden wir diese Funktion in den Core Dateien unter /wp-includes/functions.php ab Zeile 1210.

/**
 * Display the robots.txt file content.
 *
 * The echo content should be with usage of the permalinks or for creating the
 * robots.txt file.
 *
 * @since 2.1.0
 */
function do_robots() {
    header( 'Content-Type: text/plain; charset=utf-8' );

    /**
     * Fires when displaying the robots.txt file.
     *
     * @since 2.1.0
     */
    do_action( 'do_robotstxt' );

    $output = "User-agent: *n";
    $public = get_option( 'blog_public' );
    if ( '0' == $public ) {
        $output .= "Disallow: /n";
    } else {
        $site_url = parse_url( site_url() );
        $path = ( !empty( $site_url['path'] ) ) ? $site_url['path'] : '';
        $output .= "Disallow: $path/wp-admin/n";
    }

    /**
     * Filter the robots.txt output.
     *
     * @since 3.0.0
     *
     * @param string $output Robots.txt output.
     * @param bool   $public Whether the site is considered "public".
     */
    echo apply_filters( 'robots_txt', $output, $public );
}

In dieser Standardfunktion legt WordPress je nachdem welche Suchmaschineneinstellung wir gewählt haben folgende robots.txt Datei virtuell an.

Wenn wir das durchsuchen der Webseite für Suchmaschinen unter EinstellungenLesen verbieten sieht diese so aus.

User-agent: *
Disallow: /

Wenn wir das durchsuchen für Suchmaschinen erlauben ändert sich die robots.txt auf:

User-agent: *
Disallow: /wp-admin/

Um hier jedoch unsere eigenen Verzeichnisse oder/und Dateien hinzuzufügen verwenden wir folgenden Code und fügen ihn in die functions.php des Themes hinzu.

add_filter( 'robots_txt', 'zoechbauer_robots_txt', 10, 2 );

function zoechbauer_robots_txt( $output, $public ) {
    // Die Zeilen die wir hinzufügen
    // "n" steht dabei für einen Zeilenumbruch
    $output .= 'Disallow: /verzeichnis-1' . "n";
    $output .= 'Disallow: /verzeichnis-2' . "n";

    // Eine weitere Möglichkeit
    $output .= "Disallow: /verzeichnis-3
Disallow: /verzeichnis-4

Disallow: /verzeichnis-5";

    // Die Ausgabe
    return $output;
}

Dieses Beispiel ergibt folgende Ausgabe der robots.txt.

User-agent: *
Disallow: /wp-admin/
Disallow: /verzeichnis-1
Disallow: /verzeichnis-2
Disallow: /verzeichnis-3
Disallow: /verzeichnis-4

Disallow: /verzeichnis-5

Sollten sie das Plugin Google XML Sitemap aktiviert haben, so wird durch dieses Plugin die robots.txt zusätzlich noch durch folgende Zeile erweitert.

Sitemap: http://ihre-domain.com/sitemap.xml

Umgemünzt auf die Empfehlung von www.robotsgenerator.com würde sich der Code für die functions.php des Themes wiefolgt abändern.

add_filter( 'robots_txt', 'zoechbauer_robots_txt', 10, 2 );

function zoechbauer_robots_txt( $output, $public ) {
    // Die Zeilen die wir hinzufügen
    $output .= "Disallow: /cgi-bin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /category
Disallow: /tag
Disallow: /author
Disallow: /trackback
Disallow: /*trackback
Disallow: /*trackback*
Disallow: /*/trackback
Disallow: /*?*
Disallow: /*.html/$
Disallow: /*feed*

# Google Image
User-agent: Googlebot-Image
Disallow:
Allow: /*

# Google AdSense
User-agent: Mediapartners-Google*
Disallow:
Allow: /*

Sitemap: http://www.yoursite.com/sitemap.xml";

    // Die Ausgabe
    return $output;
}

Die Zeilen User-agent: * und Disallow: /wp-admin wurden hier weggelassen, da diese schon WordPress direkt angelegt werden. Die Zeile mit Sitemap... bei Verwendung eines Plugins wie Google XML Sitemap ebenfalls weglassen. Diese Zeile verwenden sie nur, wenn sie die sitemap.xml manuell anlegen.

Für all jene, die auf den Einsatz eines Plugins verzichten wollen, ist dies eine einfache Möglichkeit die robots.txt von WordPress zu erweitern. Für alle anderen gibt es ja zum Glück Plugins wie WP Robots Txt.




Bitte beachten Sie, dass dieser Beitrag bereits vor über einem Jahr geschrieben wurde und unter umständen nicht mehr aktuell ist.