2009-09-28 12 views
11

Quali caratteri sono consentiti nei nomi file per i file HTML su TUTTI i server (* nix, Windows, ecc.)? Sto cercando il "minimo comune denominatore" che funzionerà su tutti i server. USE: sto nominando un file da pubblicare pubblicamente (Mysite.com/My-Page.htm)Quali sono i caratteri legali/consentiti per i nomi dei file del server Web?

E.g., spazio? _ -, ecc.

E.g., posso avere File-Name.htm, File_Name.htm Nome file.htm?

Ovviamente, questo deve funzionare con tutti i server e i browser. (IIRC, il nome è limitato dal server e non dal browser, ma potrei sbagliarmi).

+0

I nomi di file sono limitati solo dal sistema operativo e dal filesystem sottostanti del server. Ad esempio, su * nix box è ammesso qualsiasi carattere tranne "/" e null. Stai davvero chiedendo informazioni sui nomi dei file, o stai chiedendo dei link ai nomi di file o forse dei riferimenti agli URL? –

risposta

18

Quali caratteri sono ammessi nei nomi dei file per i file HTML sul server?

Ciò dipende totalmente dal server. HTTP stesso consente qualsiasi carattere, compresi i caratteri di controllo e i caratteri non ASCII, purché siano opportunamente codificati% quando richiesto in un URL.

Su un server Unix non è possibile utilizzare '/' o il byte zero. (Se potessi usarli, apparirebbero nell'URL rispettivamente come '% 2F' e '% 00'.) Inoltre non puoi avere i nomi di file specifici '.' O '..', o la stringa vuota.

Su un server Windows si hanno tutte le limitazioni di un server Unix, in più non è possibile usare nessuno dei \/:*?"<>| o controllare i caratteri 1-31 e non si può avere punti o spazi iniziali o finali, e si ' Avremo difficoltà ad usare i nomi dei file legacy (CON, PRN, COM1 e molti altri).

Questo non ha nulla a che fare con HTTP; solo come i nomi dei file funzionano su Windows, che è complicated.

posso avere File-Name.htm, File_Name.htm Nome file. Htm?

Certamente. Ma nell'ultimo caso si dovrebbe collegare ad esso per URL-codifica lo spazio:

<a href="File%20Name.htm">thingy</a> 

I browser di solito consente di ottenere via con lasciando lo spazio, ma non è davvero valido. Se vuoi evitare di pensare a problemi di escape dell'URL, di escape HTML e di distinzione tra maiuscole e minuscole, rimani con a-z, 0-9 e underscore.

+1

Forse anche aggiungere A-Z allo _stick alla frase_. –

0

Non esiste un nome di file html.
Alcuni caratteri devono essere codificati in html (ad esempio se utilizzati nei collegamenti) ma i caratteri consentiti nei nomi dei documenti dipenderanno dal server Web (e possibilmente dal file system sul server).

0

Qualsiasi nome di file sarà URL-encoded quindi dovresti stare bene. E per la cronologia tutti e tre i nomi dei file funzionerebbero bene.

1

Se non si desidera che i nomi dei file vengano codificati dal server, è necessario evitare i caratteri riservati: $ & +, /:; =? @ E caratteri non sicuri: spazio, virgolette, <> #% {} | \^~ [] `

Tuttavia, come indicato nelle risposte precedenti, i server Web devono gestire tutto ciò che si desidera utilizzare codificando i caratteri.

2

Assicurarsi di eliminare

* . "/\ [ ] : ; | = ,

che non sono mai permesso, a causa di incongruenze nel file di convenzioni di denominazione pratica standard è quello di utilizzare a-z e 0-9 e il carattere di sottolineatura. Lo spazio è necessario per la maggior parte degli utenti, ma se riesci a evitarlo, ci sono problemi di analisi che migliorano l'affidabilità, puoi leggere rfc su mime (estensioni di posta multi-parte di Internet) per avere un'idea di cosa è coinvolto.

Non importa quello che fai, qualcosa è da qualche parte rischia di rendere la vita difficile - tanto che io uso i metodi di crittografia per generare casuali stringhe minuscole a-z e usare quelli come nomi di file, incorporando le informazioni utili nel codice sorgente del file.

Evitare la e commerciale ad ogni costo, ...

+0

Al valore nominale questa è una risposta errata. Ad eccezione di "/", tutti i caratteri che menzioni sono caratteri validi per un nome file su sistemi unix-like. Non dovrebbero essere necessariamente utilizzati, ma sono validi. –

+0

Come dice Jim, il traffico del server dovrebbe codificare tutto ciò che non è consentito negli URL - un examp principale è lo spazio dovrebbe essere% 20 ma quello che vedi è + per gli spazi, che è anche il carattere usato per + così (in la mia opinione non così umile) la situazione è esattamente quella di un gatto che insegue la coda quando già la tiene. –

+0

Sì, Bryan: è corto ed economico. Sono solo le prime cose che rimuovo perché anche se {[%%%]}. Ext lo fa attraverso gli hop del server, confonde char [256] in fp *. (per non parlare dei null incorporati e così via) mai visto il crash del sistema operativo con l'operatore punto nel nome del file? –

0

Direi una buona regola empirica per i nomi file per i file HTML su TUTTI i server possono essere qualsiasi combinazione di alfabeto (preferito minuscolo) e caratteri numerici (1 anche se 9), più la sottolineatura (_), meno (-) o più (+) caratteri ma senza spazi. Inoltre, terminare il nome file con dot html (ad esempio nomefile.html). Personalmente evito di usare la sottolineatura e i caratteri in più.

Problemi correlati