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?
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.
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">
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)