it-swarm.com.de

Wie kann ich robots.txt verwenden, um nur die Subdomain zu sperren?

Meine Codebasis wird von mehreren Umgebungen (Live, Staging, Dev) und Subdomains (staging.example, dev.example usw.) gemeinsam genutzt, und nur zwei dürfen gecrawlt werden (dh www.example und example). Normalerweise würde ich /robots.txt ändern und Disallow: / hinzufügen, aber aufgrund der gemeinsamen Codebasis kann ich /robots.txt nicht ändern, ohne alle (Sub-) Domains zu beeinflussen.

Irgendwelche Ideen, wie es geht?

9
alexus

Sie können eine andere robots.txt -Datei basierend auf der Unterdomäne bereitstellen, über die auf die Site zugegriffen wurde. Eine Möglichkeit, dies unter Apache zu tun, besteht darin, die URL intern mit mod_rewrite in .htaccess umzuschreiben. So etwas wie:

RewriteEngine On
RewriteCond %{HTTP_Host} !^(www\.)?example\.com$ [NC]
RewriteRule ^robots\.txt$ robots-disallow.txt [L]

Das oben Gesagte besagt, dass für alle Anfragen an robots.txt, bei denen der Host etwas anderes als www.example.com oder example.com ist, die Anfrage intern an robots-disallow.txt umgeschrieben wird. Und robots-disallow.txt enthält dann die Anweisung Disallow: /.

Wenn Ihre .htaccess-Datei andere Anweisungen enthält, muss sich diese Anweisung ganz oben befinden, bevor Routing-Anweisungen ausgeführt werden.

11
MrWhite

robots.txt funktioniert nur, wenn es im Stammverzeichnis vorhanden ist.

Sie müssen für jede Subdomain-Website einen eigenen robots.txt hochladen, auf den Sie über http://subdomain.example.com/robots.txt zugreifen können.

Fügen Sie den folgenden Code in robots.txt ein

User-agent: *
Disallow: /

Außerdem können Sie auf allen Seiten ein Robots <META> -Tag einfügen.

<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
0

Ich würde das Meta-Tag von der HTML-Seite entfernen und es je nach Subdomain dynamisch erstellen. z.B. wir benutzen subdomain dev. zur Entwicklung. Im pageload-Event haben wir also folgendes:

  ' Check if domain is DEV or PROD and set robots accordingly meta tag in head
  Dim metatag As HtmlMeta = New HtmlMeta
  metatag.Attributes.Add("name", "robots")
  If CurrentURL.Contains("dev.advertise-it") Then
    metatag.Attributes.Add("content", "NOINDEX, NOFOLLOW")
  Else
    metatag.Attributes.Add("content", "INDEX, FOLLOW")
  End If
  Page.Header.Controls.Add(metatag)
0
Robin