web-dev-qa-db-fra.com

Comment utiliser le fichier robots.txt pour interdire les sous-domaines uniquement?

Ma base de code est partagée entre plusieurs environnements (live, staging, dev) et sous-domaines (staging.example, dev.example, etc.) et seuls deux doivent être autorisés à être explorés (c'est-à-dire. www.example et example). Normalement, je modifierais /robots.txt et ajouter Disallow: /, mais en raison de la base de code partagée, je ne peux pas modifier /robots.txt sans affecter tous les domaines (sous-domaines).

Des idées comment s'y prendre?

9
alexus

Vous pouvez servir un fichier robots.txt différent en fonction du sous-domaine via lequel le site a été consulté. Une façon de procéder sur Apache consiste à réécrire l’URL en interne à l’aide de mod_rewrite dans .htaccess. Quelque chose comme:

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

Ce qui précède indique que pour toutes les demandes adressées à robots.txt où l'hôte est autre chose que www.example.com ou example.com, réécrivez en interne la demande à robots-disallow.txt. Et robots-disallow.txt contiendra alors la directive Disallow: /.

Si vous avez d'autres directives dans votre fichier .htaccess, cette directive devra être plus proche du sommet, avant toute directive de routage.

11
MrWhite

robots.txt ne fonctionne que s'il est présent dans la racine.

Vous devez télécharger un robots.txt séparé pour chaque site Web de sous-domaine, accessible depuis http://subdomain.example.com/robots.txt.

Ajoutez le code ci-dessous dans à robots.txt

User-agent: *
Disallow: /

Vous pouvez également insérer une balise Robots <META> dans toutes les pages.

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

Je supprimerais la balise meta de la page html et la construirais de manière dynamique en fonction de votre sous-domaine. par exemple. nous utilisons dev. Pour le developpement. Donc, dans l'événement pageload, nous avons ceci:

  ' 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