Devi modificare un .htaccess, o controllare un .env, o capire perché .well-known non viene servito. Ti connetti via FTP, attivi “mostra file nascosti”, e la cartella continua a sembrare vuota. Il file c’è di sicuro — via SSH lo vedi.
Non è il tuo client che è rotto, e non è un problema di permessi. È il modo in cui il protocollo FTP elenca le cartelle.
LIST non mostra i dotfile
Quando un client FTP ti mostra una cartella invia il comando LIST, e il server risponde con qualcosa che assomiglia all’output di ls -l. E come ls, il LIST semplice non include le voci che iniziano con un punto.
LIST /var/www/html
(vuoto)
LIST -a /var/www/html
-rw-r--r-- 1 www www 372 Jul 21 12:11 .htaccess
Quindi il client non riceve proprio mai .htaccess. Un interruttore “mostra file nascosti” che filtra l’elenco ricevuto — ed è così che lo implementano quasi tutti i client — non ha niente da filtrare: quella voce non è mai arrivata.
LIST -a, e perché non è il comportamento predefinito
La maggior parte dei server accetta un argomento dopo LIST e lo passa al comando di elenco sottostante, quindi LIST -a restituisce anche i dotfile. Non fa parte dello standard FTP — l’RFC 959 dice che quell’argomento è un percorso — ed è il motivo per cui i client non possono semplicemente usarlo sempre: una minoranza di server interpreta -a come un nome di file e risponde con un errore o con un elenco vuoto.
Un client fatto bene prova LIST -a e ripiega sul LIST semplice se il server rifiuta, così ottieni i file nascosti dove sono disponibili e un elenco funzionante in tutti gli altri casi.
MLSD: la risposta moderna
I server più recenti dichiarano MLSD, un elenco leggibile dalla macchina definito nell’RFC 3659. Restituisce ogni voce, dotfile compresi, con dati tipizzati invece di una riga formattata per gli umani — nessuna congettura su formati di data o posizioni delle colonne:
type=file;size=372;modify=20260721121100; .htaccess
type=dir;size=4096;modify=20260718090300; uploads
Puoi verificare cosa supporta il tuo server guardando la sua risposta FEAT. Se lì compare MLSD, gli elenchi sono sia completi sia privi di ambiguità. Se non c’è, sei in territorio LIST e vale il discorso su -a.
Perché conta più di quanto sembri
I dotfile invisibili non sono solo una seccatura. Nemmeno la sincronizzazione delle cartelle, che si basa sugli elenchi, li vede: sincronizzi una cartella locale verso il server e .htaccess non viene né caricato né confrontato — in silenzio. E la modalità mirror non lo cancella, quindi i due lati divergono senza dirlo.
Se ti è mai capitato di sincronizzare un sito e chiederti perché le regole di rewrite sul server fossero vecchie, questo è un ottimo indiziato.
E con SFTP?
SFTP non ha niente di tutto questo. Il suo elenco di cartella è un’operazione strutturata del protocollo che restituisce ogni voce, quindi i file nascosti ci sono sempre e sta al client mostrarli o nasconderli. Se puoi scegliere, SFTP è il protocollo che riserva meno sorprese — oltre a essere quello cifrato.
Come lo gestisce Upstream
Upstream usa MLSD quando il server lo dichiara, e LIST -a altrimenti, ripiegando sul LIST semplice se il server rifiuta l’argomento. I file nascosti vengono poi mostrati o nascosti dall’impostazione Vista ▸ Mostra file nascosti, e anche la sincronizzazione delle cartelle li vede.
Fino alla versione 1.1 questo era un bug vero in Upstream: l’interruttore filtrava un elenco che non conteneva mai i dotfile, quindi su FTP sembrava non fare assolutamente nulla.
Passo per passo
- Verifica se il tuo server supporta MLSD — guarda la risposta FEAT nel log di protocollo del client. Se MLSD è elencato, gli elenchi includono già i file nascosti.
- Assicurati che il client chieda le voci nascoste — sui server che hanno solo LIST il client deve inviare
LIST -a. In Upstream succede automaticamente, con un ripiego sul LIST semplice per i server che lo rifiutano. - Attiva Mostra file nascosti — in Upstream: Vista ▸ Mostra file nascosti (⇧⌘.). L’impostazione vale per entrambi i pannelli.
- Preferisci SFTP dove puoi — se il server offre SSH, usa SFTP: gli elenchi contengono sempre ogni voce, e la connessione è cifrata.
Domande frequenti
Perché l’interruttore “mostra file nascosti” del mio client non fa niente?
Perché su FTP filtra un elenco che non ha mai contenuto le voci nascoste. La soluzione deve stare un livello più sotto, nel modo in cui il client chiede l’elenco al server.
È sicuro inviare LIST -a a qualsiasi server?
Quasi sempre, ma non universalmente: alcuni server trattano -a come un percorso e restituiscono un errore o una cartella vuota. È per questo che un client dovrebbe ripiegare sul LIST semplice invece di dare per scontato.
Questo riguarda anche i caricamenti?
No. Un dotfile lo puoi caricare, scaricare, rinominare ed eliminare benissimo via FTP — semplicemente non lo vedi in un elenco semplice. Ne risente tutto ciò che si basa su un elenco, come la sincronizzazione.
Servono permessi particolari per vedere .htaccess?
No. Se puoi leggere la cartella puoi vederne i dotfile; è solo che al protocollo bisogna chiederli.