robots.txt uitlezen

Status
Niet open voor verdere reacties.

leuthrick

Gebruiker
Lid geworden
17 sep 2008
Berichten
454
Heey,

Ik ben bezig met een zoek bot aan het maken, maar nu wil ik graag dat hij kijkt naar het bestand robots.txt op de server.

ik had het volgende script gevonden:

PHP:
function robots_allowed($url, $useragent=false)
  {
    # parse url to retrieve host and path
    $parsed = parse_url($url);

    $agents = array(preg_quote('*'));
    if($useragent) $agents[] = preg_quote($useragent);
    $agents = implode('|', $agents);

    # location of robots.txt file
    $robotstxt = @file("http://{$parsed['host']}/robots.txt");
    if(!$robotstxt) return true;

    $rules = array();
    $ruleapplies = false;
    foreach($robotstxt as $line) {
      # skip blank lines
      if(!$line = trim($line)) continue;

      # following rules only apply if User-agent matches $useragent or '*'
      if(preg_match('/User-agent: (.*)/i', $line, $match)) {
        $ruleapplies = preg_match("/($agents)/i", $match[1]);
      }
      if($ruleapplies && preg_match('/Disallow:(.*)/i', $line, $regs)) {
        # an empty rule implies full access - no further tests required
        if(!$regs[1]) return true;
        # add rules that apply to array for testing
        $rules[] = preg_quote(trim($regs[1]), '/');
      }
    }

    foreach($rules as $rule) {
      # check if page is disallowed to us
      if(preg_match("/^$rule/", $parsed['path'])) return false;
    }

    # page is not disallowed
    return true;
  }

(bron: http://www.the-art-of-web.com/)

maar nu ziet hij wel als hij geblokeert word maar niet als alle bots geblokeert worden alleen mijn bot wel doorgelaten word, hij kijkt dus alleenmaar naar de laatste regel.

zouden jullie weten hoe ik dit gefixd krijg?

alvast bedankt


Mvg Rick
 
zijn dat standaard regels of werkt het script gewoon zo?

bedankt voor je reactie:D
 
Regel 11, veel voorkomende fout op het forum hier. assosiatieve array word nog niet ondersteund binnen de dubbele cotes.

$robotstxt = @file("http://{$parsed['host']}/robots.txt");
PHP:
$robotstxt = @file("http://".$parsed['host']."/robots.txt");
bekijk ook de nieuwere functie file_get_contents()
 
oke bedankt!

die code die ik hier boven schreef bleek van geen kant te kloppen:(

daarom heb ik er zelf een geschreven;)


bedankt allemaal!:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan