Ich möchte Robots erkennen und entsprechend auswerten (ja/nein).
Ich habe festgestellt, dass meine Fundstellen bei Google sich dadurch auszeichnen, dass Google bei Abfragen keine Sprache übermittelt.
Ich habe dieses eingebaut:
$p591_lg = strtolower( $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
$arr_p591_lg = explode( ',', $p591_lg ); // ru,en;q=0.9,es;q=0.8,de;q=0.7
if ( $arr_p591_lg[0] ) $p591_lg = $arr_p591_lg[0];
if ( $p591_lg[2]<'a' || $p591_lg[2]>'z' ) $p591_lg = substr( $p591_lg, 0, 2 );
$zugriff =( $zugriff && $p591_lg && $p591_lg > "aa" && $p591_lg < "zzz" );
//echo "<center>accept=[".$_SERVER['HTTP_ACCEPT_LANGUAGE']."] lg=[".$p591_lg."] zugriff=[".$zugriff."]</center>";
if (!$zugriff ) echo "<center><h2>".date("d.m.Y H:i",time())." - zu viele Anfragen.<br>fuer Suchmaschinen<br>voruebergehend nicht verfuegbar.</h2></center>";
>
> Im Programm gibt es dauernd Abfragen, ob $zugriff erlaubt ist.
>
> Bei mir geht es darum, Server-Überlastung abzuwehren.
Und da willst du eine selbstgestrickte Lösung verwenden die mehr schlecht als recht tut, was du eigentlich willst :)
Wenn du die Accept-Language bestimmen willst, gibt es fertige Lösungen wie z.B. das PEAR-Paket "HTTP" ([negotiateLanguage](http://pear.php.net/manual/en/package.http.http.negotiatelanguage.php/)) oder das PECL-Paket "pecl\_http" ([http_negotiate_language](http://php.net/manual/en/function.http-negotiate-language.php))
Als antwort HTTP 503 auszuliefert wäre ebenfalls von Vorteil, denn sonst wird diese Unsinnsausgabe auch noch indexiert.
Aber generell sind solche "sperren" auf seiten des HTTP-Servers besser aufgehoben, wenn du schon PHP anwirfst, erzeugst du bereits unnütze Last.
Eine Ebene davor wäre das Problem bereits z.B. mit mod\_rewrite lösbar, aber auch das erzeugt unnötigt Last am Server.
Noch geeigneter dafür sind spezialisierte Module für die HTTP-Server-Software die unerwünschten Traffic abfangen und garnicht erst an die komplexeren Routinen durchreichen - mod\_evasive wäre hier z.B. eine Möglichkeit.
Aber wenn normaler Traffic von Suchmaschinenrobots bereits zu viel Last erzeugt, ist der Server unterdimensioniert oder einfach falsch konfiguriert, da hilft auch nachträglich herumstricken vermutlich nicht viel.