Come creare il file robots.txt per tutti i domini sul server Apache


10

Abbiamo una configurazione del server Web di sviluppo Apache XAMPP con host virtuali e vogliamo impedire ai serp di eseguire la scansione di tutti i nostri siti. Questo viene fatto facilmente con un file robots.txt. Tuttavia, preferiremmo non includere un robots.txt di non consentire in ogni vhost e quindi rimuoverlo quando siamo andati in diretta con il sito su un altro server.

Esiste un modo con un file di configurazione di Apache per riscrivere tutte le richieste a robots.txt su tutti i vhosts in un singolo file robots.txt?

Se è così, potresti darmi un esempio? Penso che sarebbe qualcosa del genere:

RewriteEngine On
RewriteRule  .*robots\.txt$         C:\xampp\vhosts\override-robots.txt [L] 

Grazie!


robots.txt non è obbligatorio e alcuni crawler lo ignoreranno. Non dovrebbe essere visto come una funzione di sicurezza. Se vuoi nascondere il tuo sito fino a quando non è pronto per il pubblico, aggiungi l'autenticazione.
Mircea Vutcovici,

Risposte:


25

Apache mod_alias è progettato per questo e disponibile dal sistema Apache di base e può essere impostato in un posto senza quasi nessun sovraccarico di elaborazione, a differenza di mod_rewrite.

Alias /robots.txt C:/xampp/vhosts/override-robots.txt

Con quella riga nel file apache2.conf, al di fuori di tutti i vhost, http://example.com/robots.txt - su qualsiasi sito Web che serve, verrà generato il file specificato.


Questo. Inserisci un Aliasin ogni <VirtualHost>blocco. +1.
Steven lunedì

Grazie! Funzionava perfettamente. Sapevo che c'era una soluzione facile ...
Michael Berkompas il

Se lo desideri su ogni singolo host virtuale, non è necessario inserirlo in tutti. Può andare a livello globale, come l'alias predefinito / manuale è pronto all'uso.
Alister Bulman,

Grazie per la soluzione, anche se vedere C: / in mi fa male allo stomaco sapendo che c'è un altro server windows là fuori :) Metto la mia modifica nel mio file modules.conf o in mods enabled / alias.conf in questo modo: Alias /robots.txt /var/www/robots.txt
unc0nnected

1
Per assicurarti che questo file sia disponibile anche quando altri controlli di accesso lo bloccheranno, metti l'alias e <Location "/robots.txt"> Allow from all </Location>subito dopo, all'interno del main<IfModule alias_module>
Walf

1

Metti il ​​tuo robots.txtfile globale comune da qualche parte nel filesystem del tuo server accessibile al processo apache. Per motivi di illustrazione, suppongo che sia a /srv/robots.txt.

Quindi, per impostare la distribuzione mod_rewritedi quel file ai client che lo richiedono, inserire le seguenti regole nel <VirtualHost>blocco di configurazione di ciascun vhost :

RewriteEngine on
RewriteRule ^/robots.txt$ /srv/robots.txt [NC, L]

Se stai inserendo le regole di riscrittura in .htaccessfile per directory anziché in <VirtualHost>blocchi, dovrai modificare leggermente le regole:

RewriteEngine on
RewriteBase /
RewriteRule ^robots.txt$ /srv/robots.txt [NC, L]

Potresti spiegare questo "Metti il ​​tuo file robots.txt globale comune da qualche parte nel filesystem del tuo server che è accessibile al processo apache. Per motivi di illustrazione, suppongo che sia in /srv/robots.txt." più in dettaglio? Devo sapere cosa intendi creando una directory disponibile per il processo apache?
Michael Berkompas,

Ogni sito è contenuto in una cartella come testsite.int.devcsd.com sotto C: \ xampp \ vhosts
Michael Berkompas,

@Michael: non preoccuparti di questo mod_rewritehack eccessivamente complicato . Usa Aliasinvece, come suggerito da Alister.
Steven lunedì

0

Non sono sicuro se si esegue XAMPP su Linux o meno, ma se lo è, è possibile creare un collegamento simbolico da tutti gli host virtuali allo stesso file robots.txt, ma è necessario assicurarsi che la configurazione di Apache per ciascun host virtuale sia autorizzato a seguire i collegamenti simbolici (ai sensi della <Directory>direttiva Options FollowSymLinks).


Preferirei non dover modificare ogni singola dichiarazione del vhost. Ci sono oltre 30 ... Inoltre, voglio che sia un over-over automatico in modo da non dover fare nulla quando si crea un nuovo vhost.
Michael Berkompas,

Michael, usa sed per fare una modifica di massa, cose abbastanza facili, sicuramente non devi farlo manualmente. Disposto come farlo qui in basso: blog.netflowdevelopments.com/2012/10/11/...
unc0nnected

0

Approccio diverso alla soluzione.

Ospito più virtualhost (più di 300) nel mio ambiente cluster. Per proteggere i miei server dall'essere martellato dai crawler, definisco Crawl-delay per 10 secondi.

Tuttavia, non posso imporre a tutti i miei clienti una configurazione robots.txt fissa. Lascio che i miei clienti utilizzino il proprio robots.txt se lo desiderano.

Riscrivi il modulo controlla innanzitutto se il file esiste. Se non esiste, i moduli riscrivono alla mia configurazione predefinita. Esempio di codice di seguito ...

Per mantenere la riscrittura interna, è necessario utilizzare l'alias. Invece di definire un nuovo alias che può causare alcuni conflitti lato utente, ho individuato il mio file robots.txt all'interno della cartella / APACHE / error / che ha già un alias come configurazione predefinita.

<Directory /HOSTING/*/*/public_html>
        Options SymLinksIfOwnerMatch
        <Files robots.txt>
                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} -f [OR]
                RewriteCond %{REQUEST_FILENAME} -d
                RewriteRule (.*) - [L]
                RewriteRule (.*) /error/robots.txt [L]
        </Files>
</Directory>
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.