Una cosa che ho notato lavorando nel web è che un sacco (ma proprio un sacco) di webmaster ignorano totalmente l’esistenza ed il comportamento di Google quando sviluppano un nuovo sito internet. In particolare mi riferisco all’errore di lasciare i siti in sviluppo aperti ai bot dei motori di ricerca.
Lasciare che un motore di ricerca scansioni e indicizzi le pagine di un sito web in sviluppo può creare non pochi problemi:
- i motori di ricerca mappano URL che potrebbero essere temporanei e questo genera in futuro errori 404
- i motori di ricerca indicizzano pagine work-in-progress, che potrebbero essere incomplete, non tradotte o addirittura vuote
- i motori di ricerca non gradiscono indicizzare contenuti duplicati o di bassa qualità
Quando il sito andrà live ci saranno già contenuti duplicati in Google presi dal sito in sviluppo, ci saranno diversi errori 404 e la qualità percepita del sito web a livello SEO tenderà al ribasso.
Per questi motivi consiglio sempre ai webmaster di chiudere il sito in sviluppo ai bot dei motori di ricerca. Vediamo alcuni metodi, ordinati per efficacia, per impedire scansione e indicizzazione delle pagine in sviluppo.
Impostare la password di accesso via file di configurazione Virtual Host Apache
Il metodo più efficiente per proteggere una directory in un web server Apache è attraverso il file di configurazione del Virtual Host.
Apri il tuo file di configurazione ed inserisci all’interno del blocco VirtualHost
il blocco directory
, con tutto il suo contenuto come da esempio da riga 7 a 12:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/html">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
</VirtualHost>
- Sostituisci
Directory "/var/www/html"
con la directory che vuoi bloccare nel tuo web server Apache - Sostituisci
/etc/apache2/.htpasswd
con il percorso completo per il tuo file .htpasswd
Impostare la password di accesso via .htaccess
Con il file .htaccess è molto facile proteggere l’accesso ad una cartella con una password. L’unico aspetto negativo di questo metodo è che il web server rilegge il file .htaccess ad ogni accesso alla sua directory, in siti internet molto affollati questo sistema potrebbe impattare sulle prestazioni.
Assicurati che il tuo web server sia abilitato ad eseguire le istruzioni contenute nel file .htaccess. Nel caso non il metodo funzionasse verifica che, all’interno del file /etc/apache2/apache2.conf
sia presente il comando AllowOverride All
.
Il metodo è denominato htaccess password protection oppure htaccess authentication e funziona caricando due file denominati .htaccess e .htpasswd nella directory che si desidera proteggere con password. Il file .htaccess dovrebbe contenere quanto segue:
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /path/to/.htpasswd
Require valid-user
- Sostituisci
/path/to/.htpasswd
con il percorso completo per il tuo file .htpasswd.
Impostare la password di accesso via server block Nginx
Anche Nginx permette di proteggere specifiche directory con password. Per abilitare questa funziona è necessaio aprire e modificare il file di configurazione dell’istanza del sito (Server Block).
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
- Aggiungi le ultime due righe
auth_basic
dentro il bloccolocation
- Sostituisci
/etc/nginx/.htpasswd
con il percorso del tuo file .htpasswd
Il file .htpasswd
A questo punto, sia che tu abbia scelto di modificare il file di configurazione del Virtual Host oppure il file .htaccess, è necessario creare e caricare il file .htpasswd.
Il file .htpasswd deve contenere il nome utente e la password, un esempio è il seguente:
test:$apr1$S8/.n6G5$r/3c81y3wR84GZ5EHDdKt1
Il codice mostrato consente all’utente “test” di accedere all’area protetta con la password “cicciopasticcio123”. Il testo “$apr1$S8/.n6G5$r/3c81y3wR84GZ5EHDdKt1” è la versione crittografata della password “cicciopasticcio123”.
Dovrai usare un generatore htpasswd per creare un’altra password crittografata. Ogni riga del file .htpasswd può contenere una combinazione di nome utente e password, quindi non esitare a aggiungere più combinazioni.
Carica via FTP il file .htpasswd nella directory che hai indicato nel file di configurazione o nel file -.htaccess.
Ora che hai terminato il processo prova ad accedere alla cartella protetta, dovresti ricevere un popup come il seguente.
Noindex in intestazione HTTP
Tramite HTTP header possono essere passate diverse informazioni ai motori di ricerca, ad esempio con meta robots noindex.
HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: googlebot: nofollow
X-Robots-Tag: otherbot: noindex, nofollow
(…)
Nell’intestazione HTTP è possibile impostare diverse direttive x-Robots che riassumo a seguire.
Direttiva, Significato
- all – non ci sono restrizioni per l’indicizzazione o la pubblicazione. Nota: questa direttiva è il valore predefinito e non ha alcun effetto se è elencato esplicitamente
- noindex – non mostrare questa pagina nei risultati di ricerca e non mostrare un collegamento “memorizzato nella cache” nei risultati di ricerca
- nofollow – non seguire i link in questa pagina
- none – equivalente a noindex, nofollow
- noarchive – non mostrare il link alla versione di cache della pagina nei risultati di ricerca
- nosnippet – non visualizzare uno snippet nei risultati della ricerca per questa pagina
- noodp – non utilizzare metadati dal progetto Open Directory per titoli o frammenti mostrati per questa pagina
- notranslate – non offrire la traduzione di questa pagina nei risultati di ricerca
- noimageindex – non indicizzare le immagini in questa pagina
- unavailable_after – [RFC-850 date/time] non mostrare questa pagina nei risultati di ricerca dopo la data/ora specificata. La data/ora deve essere specificata nel formato RFC 850
Meta robots noindex
Per impedire ai motori di ricerca di indicizzare e mostrare la pagina nei risultati puoi usare la meta robot noindex.
<meta name="robots" content="noindex">
<meta name="googlebot" content="noindex">
Disallow nel Robots.txt
L’ultimo metodo vede l’utilizzo del file robots.txt. Ricordati che il robots.txt non impedisce l’indicizzazione di una pagina o una cartella, ma impedisce soltanto la scansione da parte dei bot definiti.
#tutto aperto:
User-agent: *
Disallow:
#tutto chiuso:
User-agent: *
Disallow: /
#esempio
User-agent: *
Disallow: /photos
Allow: /photos/mycar.jpg
Una pagina bloccata dal robots.txt può comunque apparire nei risultati di ricerca, tuttavia se non hai modo di implementare i metodi precedenti non ti resta che usare questo ultimo metodo.
Come vedi, anche una pagina di Google che è in Disallow nel robots.txt, viene comunque mostrata in SERP. Guarda bene il tag meta description del risultato:
A description for this result is not available because of this site’s robots.txt
Una descrizione per questo risultato non è disponibile a causa del file robots.txt di questo sito
Commenti |6
Lascia un commentoCiao, ottimo post.
Ho però provato bloccare l’accesso ad una sottocartella del mio sito web tramite .htaccess:
AuthType Basic
AuthName “Password Protected Area”
AuthUserFile /public_html/george/.htpasswd
Require valid-user
# BEGIN WordPress
RewriteEngine On
RewriteBase /george/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /george/index.php [L]
# END WordPress
Il risultato è che viene fuori la maschera che mi chiede user e password, li inserisco, ma una volta entrato nella cartella mi dà errore 500.
Se tolgo quella direttiva dall’.htaccess, il WordPress viene perfettamente caricato.
Ciao Fausto, il file .htaccess agisce a livello di cartella, quello in root è per il primo livello, mentre tu poi puoi definire regole per cartelle specifiche, con .htaccess dedicati e inseriti in quelle medesime cartelle. In pratica il file agisce come se fosse un file di configurazione a livello di cartella.
Fammi sapere, ciao!
ciao articolo interessante … una domanda .. magari mi puoi illuminare … io il sito l’ho installato in una directory /wp/ ho bloccato la ricerca di google … in questo modo il mio socio poteva vedere l’avanzamento dei lavori senza problemi di accessi vari … infatti io gli davo url del sito più il /wp/ finale.
ora dopo circa 5-6 mesi nella search console di google ho trovato degli errori su alcune pagine che riportano davanti il /wp/nomepagina ….. ???? stranissimo da cosa puoi dipendere?
Ciao Massimo, scusa ma Akismet aveva taggato il tuo commento come spam e non era stato pubblicato. Non mi è ben chiara la tua domanda, da quello che ho capito hai installato WordPress in una sotto-cartella /wp/ nella root del webserver. Quindi è normale che Google indicizzi le pagine dentro la cartella /wp/ se non hai implementato regole di URL rewrite. Che tipo di errore ti segnala GSC?
Buonasera Giovanni sono Igor, grazie del tuo articolo. Ho seguito la procedura con file .htaccess e .htpassw. Quando entro nella sottocartella (“test”) e quando entro, dopo aver inserito username e password, riscontro una pagina con errore 500. E’ corretto che sia così? Oppure dovrei sistemare? Ps ho cambiato i permessi dei due file a 755 invece che 644. E’ corretto o riporto a 644? Grazie!
Ciao Igor, una volta fatto login lo status code deve essere 200. Che web server hai? Hai riavviato il server dopo le modifiche?