Caricare un PDF su WordPress sembra una cosa banale: vai in Media → Aggiungi nuovo, carichi il file, copi il link e lo inserisci in una pagina. Fine.
In realtà, dal punto di vista SEO e sicurezza, quel PDF diventa spesso molto più pubblico di quanto si pensi. WordPress espone infatti un URL diretto del file nella Libreria Media, e la documentazione ufficiale di WordPress mostra proprio che ogni elemento media può avere un “File URL” copiabile e accessibile direttamente.
Questo significa una cosa semplice: se carichi un PDF in /wp-content/uploads/, quel file può essere raggiunto da chi conosce l’indirizzo. E, in alcuni casi, può anche essere scoperto e indicizzato da Google.
Il punto importante è questo: mettere un PDF in noindex non equivale a proteggerlo. Sono due operazioni diverse.
Il noindex dice ai motori di ricerca: “non mostrare questo file nei risultati”. La protezione, invece, dice agli utenti non autorizzati: “non puoi aprire o scaricare questo file”. Sono due livelli distinti e vanno gestiti con strumenti diversi.
Perché i PDF caricati su WordPress possono finire su Google
Quando carichi un PDF nella Libreria Media, WordPress lo salva normalmente nella cartella degli upload, spesso con una struttura simile a:
/wp-content/uploads/2026/05/nome-file.pdf
La struttura predefinita degli upload di WordPress usa proprio il percorso /wp-content/uploads/YYYY/MM/, come indicato anche dalla documentazione WordPress VIP.
Se quel PDF viene linkato da una pagina pubblica, da un articolo, da una newsletter, da una sitemap, da un vecchio contenuto o persino da un sito esterno, Google può scoprirlo. A quel punto può decidere di inserirlo nei risultati di ricerca.
Questo può essere un problema quando il PDF contiene:
- listini prezzi;
- documenti riservati;
- dispense per utenti registrati;
- ebook scaricabili dopo compilazione modulo;
- preventivi;
- presentazioni commerciali;
- documenti tecnici non pensati per Google;
- materiale destinato solo a clienti o collaboratori.
Per questo conviene ragionare su due domande diverse: voglio solo evitare che il PDF appaia su Google? Oppure voglio proprio impedire l’accesso al file?
Noindex su un PDF: perché Yoast o il meta robots non bastano
Su una normale pagina WordPress puoi inserire un meta tag di questo tipo:
<meta name="robots" content="noindex">
Il problema è che un PDF non è una pagina HTML. Non ha un <head>, non ha un template WordPress, non passa dal classico layout del tema e non può contenere il meta robots come una pagina o un articolo.
Google lo dice chiaramente: per bloccare l’indicizzazione di risorse non HTML, come PDF, video o immagini, bisogna usare l’header HTTP X-Robots-Tag.
Quindi, se vuoi mettere in noindex un PDF, la soluzione corretta non è aggiungere un campo SEO al file media, ma fare in modo che il server risponda con un header simile a questo:
X-Robots-Tag: noindex
Volendo essere più restrittivi, si può usare anche:
X-Robots-Tag: noindex, nofollow, noarchive
In pratica stai dicendo ai crawler: non indicizzare questo file, non seguire eventuali link contenuti nel file e non conservarne una copia cache.
Attenzione: robots.txt non è la soluzione giusta
Un errore molto comune è pensare: “blocchiamo i PDF dal file robots.txt”.
Per esempio:
User-agent: *
Disallow: /wp-content/uploads/
Sembra una soluzione logica, ma non lo è. Google spiega che, affinché il noindex venga rilevato, la pagina o la risorsa non deve essere bloccata da robots.txt: Googlebot deve poterla scansionare per vedere il meta tag o l’header HTTP.
In altre parole: se blocchi il PDF con robots.txt, Google potrebbe non riuscire a leggere l’header X-Robots-Tag. E se il file era già conosciuto, potrebbe continuare ad apparire nei risultati, magari solo come URL senza contenuto completo.
Quindi la regola pratica è:
per deindicizzare un PDF usa X-Robots-Tag: noindex, non robots.txt.
Come impostare tutti i PDF in noindex su WordPress
Se il tuo sito gira su Apache o LiteSpeed, la strada più pratica è intervenire sul file .htaccess.
Per WordPress, di solito il file .htaccess si trova nella root del sito, cioè nella stessa cartella dove trovi wp-config.php, wp-content, wp-admin e wp-includes.
Puoi aggiungere una regola di questo tipo:
<IfModule mod_headers.c>
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex, nofollow, noarchive"
</FilesMatch>
</IfModule>
Questa regola dice al server: ogni volta che viene servito un file .pdf, aggiungi l’header X-Robots-Tag.
Google mostra esempi molto simili per Apache e NGINX nella propria documentazione ufficiale, usando X-Robots-Tag proprio per i file PDF.
Se invece vuoi essere più prudente e usare solo il comando essenziale, puoi scrivere:
<IfModule mod_headers.c>
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex"
</FilesMatch>
</IfModule>
Personalmente, per PDF che non devono apparire su Google, userei almeno:
noindex, noarchive
Il nofollow lo aggiungerei solo se nel PDF ci sono link che non vuoi far seguire ai crawler.
Come impostare in noindex solo i PDF dentro uploads
Se non vuoi applicare la regola a tutti i PDF del sito, ma solo a quelli caricati nella Libreria Media, puoi inserire un file .htaccess direttamente dentro:
/wp-content/uploads/
Con questo contenuto:
<IfModule mod_headers.c>
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex, noarchive"
</FilesMatch>
</IfModule>
Questa soluzione è più mirata: riguarda i file PDF caricati negli upload, non eventuali PDF presenti in altre cartelle del sito.
Su alcuni hosting, però, le regole .htaccess nelle sottocartelle possono essere limitate o gestite in modo diverso. Per questo, dopo aver inserito la regola, bisogna sempre testare l’header.
Come verificare se il noindex funziona davvero
Dopo aver aggiunto la regola, non basta aprire il PDF nel browser. Il PDF potrebbe aprirsi normalmente, ma questo non ti dice se l’header SEO è presente.
Devi controllare la risposta HTTP.
Da terminale puoi usare:
curl -I https://www.tuosito.it/wp-content/uploads/2026/05/documento.pdf
Dovresti vedere una riga simile:
X-Robots-Tag: noindex, noarchive
Se non la vedi, la regola non sta funzionando.
Puoi anche usare strumenti online per controllare gli HTTP headers, cercando “HTTP header checker” e incollando l’URL del PDF.
Google consiglia anche di usare Search Console per verificare come Google vede una URL e per controllare eventuali problemi di indicizzazione.
Se usi NGINX
Se il sito è su NGINX, il file .htaccess non viene letto. In quel caso la regola va inserita nella configurazione del server.
Esempio:
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, noarchive";
}
Google riporta proprio esempi NGINX per aggiungere X-Robots-Tag ai PDF e ad altri file non HTML.
Su hosting condivisi, però, spesso non puoi modificare direttamente la configurazione NGINX. In quel caso devi chiedere al provider oppure usare un plugin che gestisca i file in modo diverso.
Perché uno snippet PHP in WordPress non basta
Qui bisogna stare attenti, perché è un punto molto importante.
Uno snippet PHP inserito in WordPress funziona quando la richiesta passa da WordPress. Ma un PDF caricato in /wp-content/uploads/ spesso viene servito direttamente dal server, senza caricare WordPress.
Quindi uno snippet in functions.php o in Code Snippets potrebbe funzionare sulle pagine HTML, ma non necessariamente sui PDF diretti.
Per questo, per i PDF, la soluzione più affidabile è a livello server:
.htaccesssu Apache/LiteSpeed;- configurazione server su NGINX;
- plugin che intercetta e serve i file tramite WordPress;
- storage privato fuori dalla cartella pubblica.
Proteggere un PDF è un’altra cosa
Ora arriviamo alla parte più delicata: la protezione.
Un PDF in noindex può comunque essere aperto da chi conosce il link. Il noindex non è una password. Non è un blocco. Non impedisce il download. Non impedisce la condivisione del link.
Google lo chiarisce bene: il noindex impedisce la visualizzazione nei risultati di ricerca, ma utenti e altri sistemi possono comunque accedere alla pagina o al file se hanno l’URL.
Quindi se un PDF è davvero riservato, non basta metterlo in noindex.
Serve una protezione reale.
I tre livelli di protezione dei PDF su WordPress
1. PDF pubblico ma non indicizzabile
Questo è il caso più semplice.
Esempio: hai un PDF scaricabile da una pagina del sito, non contiene dati sensibili, ma non vuoi che Google lo mostri come risultato autonomo.
In questo caso puoi:
<IfModule mod_headers.c>
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex, noarchive"
</FilesMatch>
</IfModule>
Poi evita di inserirlo nelle sitemap, evita di creare pagine media inutili e verifica che Search Console rilevi il noindex.
Questo approccio va bene per file pubblici, brochure, allegati tecnici o materiali che possono essere letti dagli utenti, ma che non vuoi trasformare in risultati Google separati.
2. PDF accessibile solo tramite area riservata
Qui il discorso cambia.
Se il PDF deve essere visto solo da utenti registrati, clienti o membri, allora devi impedire l’accesso diretto al file.
Non devi lasciare il PDF liberamente raggiungibile qui:
/wp-content/uploads/2026/05/file-riservato.pdf
Perché, se l’URL è pubblico, basta copiarlo e condividerlo.
In questo caso conviene usare un sistema che controlli i permessi prima di servire il file. Alcuni plugin fanno proprio questo: spostano o gestiscono i file in una posizione protetta, poi li servono solo dopo aver verificato che l’utente abbia diritto ad accedervi.
Per esempio, Prevent Direct Access dichiara di proteggere file della Libreria Media, inclusi PDF e documenti, facendo accedere direttamente solo amministratori e autore del file, mentre gli utenti non autorizzati vengono reindirizzati a una 404 o a una pagina personalizzata.
Anche sistemi membership o LMS ragionano in modo simile. LifterLMS, per esempio, descrive una protezione in cui i file vengono spostati in una directory privata, l’accesso pubblico diretto viene bloccato e il file viene servito solo dopo un controllo dei permessi.
3. PDF sensibile o confidenziale
Se il PDF contiene dati veramente riservati, come contratti, dati personali, offerte private, documenti interni o file destinati a pochi utenti specifici, la Libreria Media standard di WordPress non è il posto ideale.
In quel caso la soluzione migliore è:
- file fuori dalla cartella pubblica;
- accesso tramite login;
- controllo permessi lato server;
- URL temporanei o firmati;
- eventuale scadenza del link;
- niente link diretto permanente.
WordPress Download Manager, per esempio, documenta diverse modalità di protezione, tra cui PHP proxy, rewrite .htaccess e private storage fuori dalla web root, indicando quest’ultima come soluzione con il livello di sicurezza più alto per media sensibili.
Questo è il concetto importante: se il file è davvero sensibile, non deve stare in una cartella pubblica sperando che nessuno trovi il link.
Disattivare le attachment page dei media
C’è poi un altro problema tipico di WordPress: le pagine allegato.
Quando carichi un media, WordPress può creare una pagina dedicata a quel file. Non è il file diretto, ma una pagina WordPress che mostra il media. Queste pagine spesso hanno poco contenuto e possono creare problemi SEO, perché diventano pagine “sottili”.
Yoast consiglia di disabilitare le media pages e reindirizzare gli URL degli allegati al file stesso, proprio perché gli attachment post sono accessibili con URL proprie e spesso hanno poco valore SEO.
In Yoast SEO puoi controllare questa impostazione da:
Yoast SEO → Impostazioni → Avanzate → Pagine media
E disattivare le pagine media.
Questo però non protegge il PDF. Serve solo a evitare che WordPress generi pagine allegato indicizzabili e poco utili.
Cosa fare se i PDF sono già indicizzati su Google
Se un PDF è già comparso su Google, devi muoverti in modo ordinato.
La sequenza corretta dipende dal livello di urgenza.
Se il PDF non è sensibile, puoi:
- aggiungere
X-Robots-Tag: noindex; - verificare che l’header sia visibile;
- chiedere una nuova scansione da Search Console;
- attendere che Google aggiorni l’indice.
Google spiega che, se una pagina o risorsa continua ad apparire nei risultati dopo il noindex, spesso è perché Google non l’ha ancora riscansionata; il tempo può variare e si può chiedere una nuova scansione tramite lo strumento Controllo URL.
Se invece il PDF contiene dati riservati, devi essere più drastico:
- rimuovi o proteggi subito il file;
- usa lo strumento Rimozioni di Search Console;
- applica una soluzione permanente: password, accesso riservato,
noindex, 404/410 o rimozione definitiva.
Google specifica che lo strumento Rimozioni può rimuovere rapidamente una URL dai risultati, ma le richieste durano circa 6 mesi; per una rimozione permanente bisogna rimuovere o aggiornare il contenuto, proteggerlo con password o aggiungere noindex.
Quindi Search Console è utile per l’emergenza, ma non sostituisce la correzione tecnica.
Plugin utili per proteggere PDF su WordPress
Se devi solo aggiungere noindex, spesso basta una regola server.
Se invece devi controllare chi può scaricare i PDF, ha senso usare un plugin dedicato.
Prevent Direct Access
È pensato proprio per proteggere file caricati nella Libreria Media, inclusi PDF, documenti, immagini, audio e video. La scheda ufficiale del plugin dice che, una volta protetti, solo amministratori e autore del file possono accedere direttamente, mentre gli utenti non autorizzati vengono reindirizzati.
È indicato quando vuoi proteggere file già gestiti tramite Media Library.
WordPress Download Manager
È più orientato alla gestione strutturata dei download. La scheda WordPress.org indica funzioni come password, ruoli utente, controllo accessi, limiti di download, CAPTCHA, IP block, log dei download e protezione dei file media.
È più adatto quando il sito ha una vera sezione download, documenti, manuali, cataloghi, file premium o risorse da monitorare.
Simple Download Monitor
Simple Download Monitor ha una funzione di “Enhanced File Protection” che crea una cartella protetta dentro gli upload e impedisce l’accesso diretto ai file via browser; la documentazione specifica che i nuovi file caricati dopo l’attivazione vengono gestiti nella cartella protetta e serviti tramite il sistema del plugin.
È interessante per siti che vogliono tracciare i download e aggiungere uno strato di protezione senza costruire un’intera area riservata complessa.
Plugin membership o LMS
Se i PDF sono legati a corsi, aree clienti o abbonamenti, spesso conviene usare direttamente il sistema membership/LMS. Paid Memberships Pro, per esempio, documenta una gestione dei file riservati per condividere PDF, ZIP o MP4 solo con specifici livelli di membership.
In questo caso la protezione dei PDF non è un dettaglio tecnico isolato, ma parte della logica di accesso del sito.
La strategia migliore, in pratica
Per un sito WordPress normale, io ragionerei così.
Se il PDF è una brochure pubblica, ma non vuoi che Google lo mostri nei risultati:
X-Robots-Tag: noindex, noarchive
Se il PDF è scaricabile solo dopo compilazione di un modulo, ma non è davvero segreto:
- mettilo in
noindex; - non linkarlo in modo troppo esposto;
- valuta un link temporaneo o un download manager;
- evita di lasciarlo nelle sitemap.
Se il PDF è riservato ai clienti:
- non affidarti alla Libreria Media standard;
- usa un plugin di protezione file;
- controlla accesso tramite login o ruolo utente;
- impedisci accesso diretto all’URL.
Se il PDF è sensibile:
- non caricarlo in
/wp-content/uploads/come file pubblico; - spostalo fuori dalla web root;
- usa una consegna controllata tramite PHP, membership, storage privato o link firmati;
- valuta se debba proprio stare online.
Errori da evitare
Il primo errore è pensare che “non linkare il PDF” basti. Non basta. Se il file è pubblico, l’URL può essere scoperto, condiviso o indicizzato.
Il secondo errore è usare robots.txt per deindicizzare. Google dice chiaramente che il noindex non va specificato nel file robots.txt e che, se blocchi la risorsa con robots.txt, il crawler potrebbe non vedere la regola noindex.
Il terzo errore è usare solo Yoast pensando di aver messo in noindex il PDF diretto. Yoast può aiutare sulle pagine media e sulle pagine HTML, ma un file PDF diretto richiede un header HTTP.
Il quarto errore è confondere privacy e SEO. Un file non indicizzato non è privato. È solo meno visibile nei motori di ricerca.
Il quinto errore è caricare file riservati nella Media Library e poi provare a “mettere una pezza” dopo. Per i documenti davvero riservati, la protezione va progettata prima.
Procedura consigliata passo passo
Per impostare correttamente i PDF in noindex e proteggerli su WordPress, puoi seguire questa procedura:
- Fai un elenco dei PDF presenti sul sito.
- Dividili in tre categorie: pubblici, non indicizzabili, riservati.
- Per i PDF pubblici ma da non indicizzare, aggiungi
X-Robots-Tag. - Per i PDF riservati, usa un sistema di protezione file.
- Disattiva o gestisci le attachment page dei media.
- Controlla che i PDF non finiscano in sitemap inutili.
- Testa gli header HTTP dei PDF.
- Verifica Search Console.
- Se alcuni PDF sono già indicizzati, usa lo strumento Rimozioni solo come misura temporanea.
- Per i file sensibili, rimuovi il file pubblico e sostituiscilo con una soluzione ad accesso controllato.
Conclusione
Gestire i PDF su WordPress richiede un minimo di attenzione in più rispetto a una normale pagina.
Una pagina WordPress può essere messa in noindex con un meta tag. Un PDF no: per un PDF serve l’header HTTP X-Robots-Tag.
Ma il punto più importante è un altro: noindex non significa protetto.
Se vuoi solo evitare che un PDF appaia su Google, lavora sugli header.
Se vuoi impedire che venga scaricato da chi non è autorizzato, devi lavorare sulla protezione del file.
Se contiene dati sensibili, non dovrebbe mai essere servito come semplice file pubblico dentro /wp-content/uploads/.
La regola finale è questa: usa il noindex per la visibilità nei motori di ricerca, usa la protezione file per la sicurezza reale.



