Hallo,
Also so wie ich es verstehe sieht dein Script ausfürhlich so aus:
$kompletturl:
Diese Zeile natuerlich nicht.
Der Rest ist dann OK.
Natuerlich musst Du eben in den entsprechenden Abschnitten
(if/else) den gewuenschten Text ausgeben, z.B. mit echo()
oder print(). Zeilenumbrueche gibt es mit "\n".
Als Alternative koenntest Du auch zwei statische Dateien
schreiben und ins gleiche Verzeichnis hochladen,
z.B. robots-ok.txt und robots-verboten.txt
Dann steht im PHP-Skript an der betreffenden Stelle nur:
if (isset($ok[$kompletturl]))
{ readfile("robots-ok.txt"); }
else
{ readfile("robots-verboten.txt"); }
Mit dem Befehl readfile() wird einfach der Inhalt
der Datei "wie sie ist" an den Browser ausgegeben.
http://www.php.net/manual/de/function.readfile.php
Lies nochmal meinen Vorschlag im Archiv:
http://forum.de.selfhtml.org/archiv/2003/11/62456/#m353215
(Wenn's gerade nicht klappt, warte ein paar Minuten.)
Das Skript muss als einziger Inhalt in einer robots.php stehen.
Ganz am Anfang dieses Skripts muss in den PHP-Modus gewechselt
werden, entweder mit
<script language="php">
oder mit
<?php
Am Ende muss entsprechend stehen:
</script>
bzw.
?>
Und als erste Ausgabe an den Client sollte das Skript
den HTTP-Header mit dem Content-Type text/plain schicken,
damit nicht (gemaess der Standard-Konfiguration) text/html
geschickt wird.
dann sind die 4 Domains erlaubt und alle anderen werden nicht erlaubt.
Also muss ich dann alle meine Domains und Subdomains die indiziert werden
sollen so angeben wie oben.
Genau.
Eine Zeile pro erlaubte (Sub)Domain.
Benötige ich dann noch eine robots.txt??
Nein. Aber Du musst dem Webserver mit der .htaccess
im Hauptverzeichnis beibringen, dass er, wenn der
Client (Robot, Browser) die Datei robots.txt verlangt,
stattdessen die robots.php schickt.
Auch das steht im erwaehnten Posting im Archiv, wo
ich diese Methode zum ersten Mal vorgeschlagen hatte.
Das ganze setzt voraus, dass mod_rewrite zur Verfuegung steht.
(Das haengt von Deinem Provider ab.)
Domain-uebergreifend kann es uebrigens dazu kommen,
dass der Server einen 302-Header schickt, also eine
Umleitung, und dass dann auch der Client mitkriegt,
dass er auf eine robots.php umgeleitet wurde.
---
Apache-Profis werden ab dem ganzen PHP-Gebastel sicher die
Nase ruempfen. Wenn man genug von Apache, mod_rewrite,
virtuellen Servern und Subdomains versteht, kann man
das Ziel sicher auch ohne PHP erreichen.
Fuer mich war es einfach eine schnelle und einfache Loesung,
die fuer meine Zwecke reicht. Von PHP verstehe ich nun mal
mehr als von raffinierter Apache-Konfiguration.
Und ich habe auch nur einen gemieteten Webspace
mit eingeschraenkten Moeglichkeiten, was Domains
und Subdomains angeht.
Im Einsatz habe ich das ganze hier:
http://www.tiptom.ch/robots.txt vs. http://tiptom.ch/robots.txt
Wenn ich nichts dagegen unternehme, ist die gleiche Ressource
unter mindestens 5 verschiedenen URLs erreichbar:
(a) http://www.domain1.test/img/bild.jpg
(b) http://domain1.test/img/bild.jpg
(c) http://www.domain2.test/domain1/img/bild.jpg
(d) http://domain2.test/domain1/img/bild.jpg
(e) http://domain1.domain2.test/img/bild.jpg
(a) ist die gegen aussen erwuenschte URL, die z.B.
als einzige von den Suchmaschinen indiziert werden soll.
(c)/(d) ist die "echte" URL auf Filesystem-Ebene.
(e) ist ein offenbar notwendiger Zwischenschritt
in der Rewrite/Mapping-Reihenfolge meines Webhosters.
Ich bezahle grundsaetzlich fuer domain2,
kriege aber das "Mapping" fuer domain1 gratis.
Das ganze Theater mit verschiedenen robots.txt
musste ich aufziehen, weil Google ploetzlich
anfing, (e) auch zu indizieren.
Gruesse,
Thomas
P.S. Der Vollstaendigkeit halber (und fuer Apache-Benutzer):
Natuerlich koennte man auch die robots.txt selbst zu
einem ausfuehrbaren PHP-Skript machen.
In der .htaccess im Hauptverzeichnis:
AddType application/x-httpd-php .txt
Damit werden alle .txt-Dateien durch den PHP-Parser geschickt.
In allen Unterverzeichnissen braucht es dann aber
wieder eine .htaccess, die das aufhebt:
AddType text/plain .txt
Damit werden .txt-Dateien wieder normal behandelt,
d.h. direkt als text/plain an den Client ausgeliefert.
Weitere Alternative:
Die Datei robots.txt.php nennen und den Server so
konfigurieren, dass er die Datei auch anzeigt,
wenn robots.txt verlangt wird.
Dies koennte vielleicht mit folgender Zeile in der .htaccess
geschehen - sofern die Server-Konfiguration es zulaesst:
Options +MultiViews
Siehe
http://httpd.apache.org/docs/mod/core.html#options
http://httpd.apache.org/docs/content-negotiation.html
http://httpd.apache.org/docs/mod/mod_negotiation.html