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.