Dove vengono salvati i file XML/PDF generati e come proteggerli
Obiettivo
Sapere dove finiscono fisicamente sul server i documenti generati da POP e come impedire che siano scaricabili pubblicamente da chi conosce (o indovina) l’URL.
Percorsi di salvataggio
I documenti generati tramite le API cloud POP (XML, PDF, e i formati aggiuntivi UBL, KSeF, ZUGFeRD a
seconda del canale attivo) vengono messi in cache localmente per velocizzare i download e ridurre il
consumo di crediti API, sotto wp-content/uploads/, suddivisi per anno e mese:
wp-content/uploads/pop-xml/YYYY/MM/
wp-content/uploads/pop-pdf/YYYY/MM/
wp-content/uploads/pop-ubl/YYYY/MM/
wp-content/uploads/pop-ksef/YYYY/MM/
wp-content/uploads/pop-zugferd/YYYY/MM/
Esiste inoltre un’opzione separata, facoltativa, per salvare una copia dell’XML generato in una cartella
dedicata (utile per backup/integrazioni esterne): di default wp-content/uploads/pop-invoice,
configurabile in Advanced.
Protezione automatica (Apache)
Ogni cartella pop-* viene protetta automaticamente da POP creando un file .htaccess al suo interno:
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Deny from all
</IfModule>
Questo blocca l’accesso diretto via browser su server Apache. Il file viene generato automaticamente alla prima scrittura in ciascuna cartella: non serve crearlo a mano.
Protezione su NGINX (richiede intervento manuale)
Su server NGINX (es. Kinsta, WPEngine, VPS con NGINX) le direttive .htaccess non vengono lette:
serve una regola equivalente nella configurazione del sito, ad esempio:
location ~ ^/wp-content/uploads/pop-(pdf|xml|ubl|ksef|zugferd|invoice)/.*$ {
return 403;
}
Dopo averla aggiunta, riavvia NGINX per applicarla.
Verifica
Prova ad aprire direttamente nel browser l’URL di un file generato (es.
https://tuosito.it/wp-content/uploads/pop-pdf/2026/07/documento.pdf): deve restituire un errore
403 (accesso negato), non il file.
Errori comuni
- Il file è scaricabile pubblicamente su NGINX — l’
.htaccessgenerato da POP non ha effetto su NGINX: serve la regolalocationmanuale sopra, applicata dal tuo hosting/provider. - Non sai se il tuo hosting usa Apache o NGINX — chiedi al provider: la differenza cambia completamente il metodo di protezione da applicare.
- La cartella
pop-invoiceè vuota — è normale se non hai attivato l’opzione di salvataggio locale opzionale in Advanced: i download dalla tab Invoices usano comunque la cachepop-xml/pop-pdf.
Configurazione correlata
Per il formato e i limiti dell’XML generato vedi xml-invoices-generated.