Robots-txt dynamisch generieren

Letzte Aktualisierung:

Man kann die robots-txt mit jedem beliebigen Texteditor erstellen und diese könnte wie folgt aussehen. Wir generieren hier eine dynamische robots.txt, dafür gibt es in PHP mehrere Möglichkeiten um in eine Datei zu schreiben. Wir nutzen hier file_put_contents() und schreiben dafür unsere eigene kleine Funktion, die kann beliebig erweitert und angepasst werden.

# robots.txt - https://www.tnado.com/
Sitemap: https://www.tnado.com/sitemap.xml

# Wenn Du Sitemaps erstellst die in getrennten Ordnern befinden wie en-en oder en-gb wegen der Sprache. Kannst Du diese auch angeben
Sitemap: https://www.tnado.com/de-de/sitemap.xml
Sitemap: https://www.tnado.com/en-en/sitemap.xml

# Man könnte Google bots oder auch Bing bots usw. den zugriff verweigern jedoch ist es den überlassen darauf zu hören
User-agent: Googlebot
Disallow: /wp-admin/

# User Agenten mit einem stern bedeutet das alle erlaubt sind
User-agent: *
# Du kannst Ordner den zugriff verbieten
Disallow: /admin/
Disallow: /images/
Disallow: /temp/
# Oder auch Dateien den zugriff verbieten
Disallow: /fotoalbum.html


Robots Textdatei im Web

Nutze die robots-txt, da sie auch ein Teil im Web an Bedeutung hat und Dir Unnötiges ersparen kann, auch wenn nicht alle Bots auf diese hören und folgen. Es existieren sehr viele Bots die auch unnötige dinge auf Deiner Webseite verursachen und somit z.B. Deine Statistiken beeinflussen. Sie ignorieren jegliche Aufforderung in der robots.txt, gehen in jeden Ordner auf Deiner Webseite und durchwühlen alles. Bots arbeiten automatisiert, sie sind programmiert dafür bestimmte aufgaben zu verrichten und werden nicht müde ;).


Tipp

Lasse keine wichtigen Dateien unverschlüsselt auf Deinem Server und schon gar nicht frei zugänglich, wenn Du wichtige Dateien auf dem Server hast. Versuche Deine Umgebung so gut wie möglich abzusichern, der Grund, warum eine Webseite unsicher ist, liegt in den meisten fällen an den Programmierer.



Beachten

Es besteht keinerlei Garantie, dass sich Suchmaschinen an die Verbote in der robots.txt halten.



Eine eigene Funktion erstellen

So kommen wir nun zu unserer Funktion, wir ermöglichen hier ein array welches wir args nennen, dies ist die Abkürzung für arguments. In den erstellen wir unsere nötigen attribute wie domain, sitemap url, line und auch path.


// PHP CODE
     0  /**  1   * Dynamic robots.txt  2   *  3   * @param array $args (domain|sitemap|line|path)  4   * @return boolean (true|false)  5   */  6  function createRobotsTXT($args = array()) {  7    8      $return = false;  9      $default = '# robots.txt - ' . (isset($args['domain'])?$args['domain']:'') . PHP_EOL;  10      $default .= 'Sitemap: ' . (isset($args['sitemap-uri'])?$args['sitemap-uri']:'') . PHP_EOL;  11      $default .= (isset($args['line'])?$args['line']:'') . PHP_EOL;  12        13      if (isset($args['path']) && !file_exists($args['path'])) {  14          $return = file_put_contents($args['path'], $default);  15      }  16        17      return $return;  18  } 

    So nutzen wir unsere Funktion dann schließlich um unsere Datei zu erstellen.


    // PHP CODE
       0  createRobotsTXT(array(  1      'domain' => 'https://www.tnado.com/',  2      'sitemap-uri' => 'https://www.tnado.com/sitemap.xml',  3      'line' => '',  4      'path' => 'robots.txt'  5  )); 

      Die Ausgabe in diesem Fall würde bei mir so aussehen und wir hätten alles übergeben was auch drin ist.


      // OUTPUT CODE
      # robots.txt - https://www.tnado.com/
      Sitemap: https://www.tnado.com/sitemap.xml


      Erweitertes Beispiel für eine robots-txt Datei

      Anderes Beispiel um Unterverzeichnisse und auch Dateien direkt auszuschließen.


      // PHP CODE
         0  createRobotsTXT(array(  1      'domain' => 'https://www.tnado.com/',  2      'sitemap-uri' => 'https://www.tnado.com/sitemap.xml',  3      'line' => 'User-agent: UniversalRobot/1.0  4  User-agent: mein-Robot  5  Disallow: /quellen/dtd/  6    7  User-agent: *  8  Disallow: /fotos/  9  Disallow: /temp/  10  Disallow: /fotoalbum.html',  11      'path' => 'robots.txt'  12  )); 

        Bei dieser Ausgabe sieht es natürlich etwas mehr aus, weil wir auch mehr reingeschrieben haben als vorher.


        // OUTPUT CODE
        # robots.txt - https://www.tnado.com/
        Sitemap: https://www.tnado.com/sitemap.xml
        
        User-agent: UniversalRobot/1.0
        User-agent: mein-Robot
        Disallow: /quellen/dtd/
        
        User-agent: *
        Disallow: /fotos/
        Disallow: /temp/
        Disallow: /fotoalbum.html


        Mit Google Search Console

        In der Search Konsole von Google ist ein Reiter unter Crawling -> robots.txt-tester und es kann auch dort eine robots.txt erstellt werden und auch getestet werden, dies ist jedoch nicht notwendig und dauert etwas länger. Die anderen Wege sind schneller und es dauert auch bis Google sie dort in der Search Konsole anzeigt.

        Hier findest Du noch ein Beitrag von mir über die  Google Search Console.

        Du kannst unter anderem Deine Sitemap in der robots.txt angeben oder auch mit bestimmte bots ausschließen (sofern sie den auf dies hören und diese nicht ignorieren).

         Weitere Informationen zu robots.txt von Google.



        Alternativ mit der htaccess

        Man kann mit der .htaccess z.B. mehr machen und das Ausschließen wirklich ermöglichen, wenn man Kenntnisse mit Regulären ausdrücken hat und diese beherrscht.