Hallo,
Danke schon mal. Irgendwie verwirrst du mich mit den vielen Alternativen ;-)
Das habe ich befuerchtet. ;-)
Die Sache ist auch nicht trivial, denn sie vermischt
einige Dinge (HTTP, Apache-Konfiguration, PHP).
Das PHP-Skript an sich ist jedoch IMHO ziemlich einfach.
Das vollstaendige Skript solltest Du als robots.php
in Deinem Hauptverzeichnis speichern.
Es sollte etwa so aussehen (alles zwischen den ----):
----
<script language="php">
@header("Content-Type: text/plain; charset=iso-8859-1");
$serververlangt=$_SERVER["HTTP_HOST"];
$urlrest=$_SERVER["REQUEST_URI"];
$kompletturl=$serververlangt.$urlrest;
unset($ok);
$ok["www.example.org/robots.txt"]=true;
$ok["www.example.net/robots.txt"]=true;
$ok["www.example.com/robots.txt"]=true;
$ok["tests.example.com/robots.txt"]=true;
if (isset($ok[$kompletturl]))
{
print ("\n");
print ("User-agent: *\n");
print ("Disallow: /bilder\n\n");
print ("# Alles andere darf von allen besucht werden... \n");
}
else
{
print ("\n");
print ("User-agent: *\n");
print ("Disallow: /\n\n");
print ("# Nur Seiten unter http://www.example.com/ sollen durchsucht\n");
print ("# und indiziert werden.\n\n");
}
print ("# Verlangt: http://$kompletturl\n");
print ("\n");
</script>
----
Alle ausgegebenen Zeilen, die mit # anfangen, insbesondere
auch die letzte ("# Verlangt:...") sind bloss Kommentare.
Man koennte sie auch weglassen.
---
Der Ordner /bilder ist nur eine "Verlegenheitsloesung",
um ueberhaupt etwas zu sperren. Wenn man gar nichts sperren will,
kann der IF-Teil auch leer sein:
if (isset($ok[$kompletturl]))
{ }
else
{
print ("User-agent: *\n");
print ("Disallow: /\n\n");
}
Weil ein leerer IF-Teil nicht gerade sinnvoll ist,
kann man auch die Bedingung umkehren ("!" ist logisch NOT)
und den Verbots-Teil in den IF-Teil verschieben.
Statt IF/ELSE hat man dann nur noch IF:
if (!isset($ok[$kompletturl]))
{
print ("User-agent: *\n");
print ("Disallow: /\n\n");
}
if ($kompletturl=="www.example.com/robots.txt")
verstehe ich nicht ganz...wieso /robots.txt wenn es gar keine robots.txt geben soll.
Das hat nichts mit PHP zu tun.
Sondern mit HTTP, Apache und mod_rewrite.
Der Client (Browser, Robot) verlangt die Ressource mit der URL:
http://www.example.com/robots.txt
_Diese_ URL ist interessant, weil Du ja wissen willst,
was der Client _verlangt_ hat.
Durch "schmutzige Tricks" auf Server-Ebene (mod_rewrite)
wird dem Client aber nicht die Datei robots.txt geliefert
(die gibt's naemlich gar nicht), sondern die Datei robots.php
Zumindest solange alles innerhalb der gleichen Domain passiert,
kriegt der Client aber nichts davon mit.
Kannst du es mir nicht ein bischen verständlicher Formulieren??
Sorry aber ich hab 0 Ahnung von PHP..
Dann solltest Du es auch nicht verwenden.
Du solltest nur Dinge anwenden, von denen Du verstehst, was sie tun.
Also das ABC kann ich Dir nicht beibringen.
Lies die dclp-FAQ http://www.dclp-faq.de/
und die wichtigsten Teile des Manuals
http://www.php.net/manual/de/
z.B.:
http://www.php.net/manual/de/getting-started.php
http://www.php.net/manual/de/langref.php
http://www.php.net/manual/de/control-structures.php
http://www.php.net/manual/de/ref.strings.php
Um die Sache mit dem Array zu verstehen:
http://www.php.net/manual/de/language.types.array.php
http://www.php.net/manual/de/function.isset.php
Fuer Anfaenger soll auch "Schattenbaum" ganz brauchbar sein:
http://www.schattenbaum.net/php/
---
Zur Apache-Konfiguration und mod_rewrite:
http://httpd.apache.org/docs/mod/mod_rewrite.html
http://httpd.apache.org/docs/misc/rewriteguide.html
Manchmal reicht statt mod_rewrite auch mod_alias:
http://httpd.apache.org/docs/mod/mod_alias.html
Doch diese Dinge sind fuer mich immer noch ein Buch
mit 6 Siegeln (d.h. ein winziges Bisschen davon verstehe
ich und wende ich an, aber den Grossteil noch nicht...)
Gruesse,
Thomas