Come posso usare robots.txt per impedire solo il sottodominio?


10

La mia base di codice è condiviso tra diversi ambienti (dal vivo, messa in scena, dev) e sottodomini ( staging.example, dev.example, ecc) e solo due dovrebbero essere autorizzati a essere sottoposti a scansione (es. www.exampleE example). Normalmente vorrei modificare /robots.txte aggiungere Disallow: /, ma a causa della base di codice condivisa non posso modificare /robots.txtsenza influire su tutti i (sotto) domini.

Qualche idea su come procedere?

Risposte:


13

Puoi pubblicare un robots.txtfile diverso in base al sottodominio attraverso il quale è stato effettuato l'accesso al sito. Un modo per farlo su Apache è riscrivere internamente l'URL usando mod_rewrite in .htaccess. Qualcosa di simile a:

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

Quanto sopra afferma che per tutte le richieste in robots.txtcui l'host è diverso da www.example.como example.com, quindi riscrivere internamente la richiesta robots-disallow.txt. E robots-disallow.txtconterrà quindi la Disallow: /direttiva.

Se hai altre direttive nel tuo file .htaccess, questa direttiva dovrà essere più vicina all'inizio, prima di qualsiasi direttiva di routing.


Stavo pensando alla stessa soluzione. Non ero sicuro se ci fosse qualcos'altro là fuori, ma alla fine della giornata, se è così, allora che cosa farà il mio lavoro)
alexus

1
Se entrambi i sottodomini / host puntano allo stesso spazio web / base di codice, non c'è nulla nello "standard" robots.txt che può controllare questo, se è quello che stai suggerendo. Il bot richiederà semplicemente sub.example.com/robots.txt, quindi dovresti fare qualcosa per servire una risposta diversa a seconda del sottodominio. Non è necessario utilizzare mod_rewrite, ma è una tecnica che ho visto usato più volte. Se robots.txtviene generato dinamicamente, è possibile modificare la risposta nel codice lato server (ad es. PHP).
MrWhite,

Un'alternativa all'utilizzo robots.txtpotrebbe essere quella di impedire l'indicizzazione, anziché la scansione, inviando X-Robots-Tag: noindexun'intestazione di risposta HTTP quando si accede a tali sottodomini (che potrebbe anche essere eseguito in .htaccess). Anche se penso che sia preferibile prevenire la scansione. (?)
MrWhite,

1

robots.txt funziona solo se è presente nella radice.

Devi caricare un robots.txtsito web separato per ogni sottodominio, da cui è possibile accedervi http://subdomain.example.com/robots.txt.

Aggiungi il codice qui sotto in a robots.txt

User-agent: *
Disallow: /

E un altro modo è che puoi inserire un <META>tag Robot in tutte le pagine.

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

3
Ma l'OP afferma già: "Normalmente vorrei modificare /robots.txte aggiungere Disallow: /, ma a causa della base di codice condivisa non posso modificare /robots.txtsenza influire su tutti i (sotto) domini".
Mr White,

0

Rimuoverei il meta tag dalla pagina html e lo creerei dinamicamente in base al tuo sottodominio. ad es. usiamo il sottodominio dev. per lo sviluppo. Quindi nell'evento pageload abbiamo questo:

  ' 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)

Sebbene ciò non impedisca la scansione , il che sembra essere il requisito dei PO.
Mr White,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.