Wir haben einen XAMPP Apache-Entwicklungswebserver mit virtuellen Hosts eingerichtet und möchten verhindern, dass Serps alle unsere Websites crawlen. Dies ist mit einer robots.txt-Datei einfach möglich. Wir möchten jedoch nicht in jedem vhost eine unzulässige robots.txt einfügen und müssen sie dann entfernen, wenn wir die Site auf einem anderen Server live geschaltet haben.
Gibt es eine Möglichkeit mit einer Apache-Konfigurationsdatei, alle Anforderungen an robots.txt auf allen vhosts in eine einzelne robots.txt-Datei umzuschreiben?
Wenn ja, können Sie mir ein Beispiel geben? Ich denke, es wäre ungefähr so:
RewriteEngine On
RewriteRule .*robots\.txt$ C:\xampp\vhosts\override-robots.txt [L]
Vielen Dank!
apache-2.2
php
robots.txt
Michael Berkompas
quelle
quelle
Antworten:
Apache mod_alias wurde dafür entwickelt und ist im Apache-Kernsystem verfügbar. Im Gegensatz zu mod_rewrite kann Apache fast ohne Verarbeitungsaufwand an einem Ort festgelegt werden.
Mit dieser Zeile in der Datei apache2.conf gibt http://example.com/robots.txt - außerhalb aller vhosts - auf jeder Website, die sie bedient, die angegebene Datei aus.
quelle
Alias
in jeden<VirtualHost>
Block. +1.<Location "/robots.txt"> Allow from all </Location>
unmittelbar danach in die Hauptdatei<IfModule alias_module>
Platzieren Sie Ihre gemeinsame globale
robots.txt
Datei irgendwo im Dateisystem Ihres Servers, auf das der Apache-Prozess zugreifen kann. Zur Veranschaulichung gehe ich davon aus, dass es bei ist/srv/robots.txt
.Dann einzurichten ,
mod_rewrite
diese Datei zu Kunden zu dienen , die es wünschen, setzen Sie die folgenden Regeln in jedem der vhost<VirtualHost>
Konfigurationsblock:Wenn Sie die Umschreiberegeln in verzeichnisbezogene
.htaccess
Dateien anstatt in<VirtualHost>
Blöcke einfügen, müssen Sie die Regeln geringfügig ändern:quelle
mod_rewrite
Hack. Verwenden SieAlias
stattdessen, wie von Alister vorgeschlagen.Sie sind sich nicht sicher, ob Sie XAMPP unter Linux ausführen oder nicht, aber wenn ja, können Sie einen Symlink von allen virtuellen Hosts zu derselben robots.txt-Datei erstellen. Sie müssen jedoch sicherstellen, dass Ihre Apache-Konfiguration für jeden virtuellen Host korrekt ist darf symlinks folgen (unter der
<Directory>
richtlinieOptions FollowSymLinks
).quelle
Unterschiedlicher Lösungsansatz.
Ich hoste mehrere (mehr als 300) virtuelle Hosts in meiner Clusterumgebung. Um meine Server vor dem Hämmern durch Crawler zu schützen, definiere ich eine Crawl-Verzögerung von 10 Sekunden.
Ich kann jedoch nicht alle meine Clients mit einer festen robots.txt-Konfiguration erzwingen. Ich überlasse es meinen Kunden, ihre eigene robots.txt zu verwenden, wenn sie dies möchten.
Das Rewrite-Modul prüft zunächst, ob die Datei vorhanden ist. Wenn es nicht vorhanden ist, werden die Module in meine Standardkonfiguration umgeschrieben. Codebeispiel unten ...
Um das interne Umschreiben beizubehalten, sollte ein Alias verwendet werden. Anstatt einen neuen Alias zu definieren, der einige benutzerseitige Konflikte verursachen kann, habe ich meine robots.txt im Ordner / APACHE / error / gefunden, der bereits einen Alias als Standardkonfiguration hat.
quelle