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 Einstellungen – Lesen 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.