2009-09-28 51 views
11

¿Qué caracteres están permitidos en los nombres de archivo para archivos HTML en TODOS los servidores (* nix, Windows, etc.)? Estoy buscando el "mínimo común denominador" que funcionará en todos los servidores. USO: Estoy nombrando un archivo para que se sirva públicamente (Mysite.com/My-Page.htm)¿Cuáles son los caracteres legales/permitidos para los nombres de los archivos del servidor web?

P. ej, espacio? _ -, etc.

P. ej., ¿puedo tener File-Name.htm, File_Name.htm File Name.htm?

Obviamente, esto debe funcionar con todos los servidores y navegadores. (IIRC, el nombre está limitado por el servidor, no por el navegador, pero podría estar equivocado).

+0

Los nombres de archivo están limitados solo por el sistema operativo y el sistema de archivos subyacentes del servidor. Por ejemplo, en los cuadros * nix se permite cualquier carácter excepto "/" y nulo. ¿Realmente está preguntando sobre nombres de archivos, o está preguntando sobre enlaces a nombres de archivos o quizás referencias a URL? –

Respuesta

18

¿Qué personajes están permitidos en los nombres de archivo para los archivos HTML en los servidores?

Eso depende totalmente del servidor. HTTP en sí mismo permite cualquier carácter, incluidos los caracteres de control y los caracteres que no son ASCII, siempre que estén adecuadamente codificados en% cuando se soliciten en una URL.

En un servidor Unix no puede usar '/' o el byte cero. (Si pudiera usarlos, aparecerían en la URL como '% 2F' y '% 00' respectivamente). Tampoco puede tener los nombres de archivo específicos '.' O '..', o la cadena vacía.

En un servidor Windows tiene todas las limitaciones de un servidor Unix, además de que no puede usar ninguno de \/:*?"<>| o controlar los caracteres del 1 al 31 y no puede tener puntos o espacios iniciales o finales, y usted ' Tendré dificultades para utilizar cualquiera de los nombres de archivos de dispositivos heredados (CON, PRN, COM1 y muchos más).

Esto no tiene nada que ver con HTTP; cómo funcionan los nombres de archivos en Windows, que es complicated.

¿Puedo tener File-Name.htm, File_Name.htm File Name.htm?

Ciertamente. Sin embargo, en el último caso se debe enlazar con él por URL que codifica el espacio:

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

Los navegadores suelen dejar pasar con dejar el espacio, pero en realidad no es válida. Si quiere evitar tener que pensar en escapes de URL, escapes de HTML y problemas que distinguen entre mayúsculas y minúsculas, siga con a-z, 0-9 y guión bajo.

+1

Quizás también agregue A-Z al _stick to_-phrase. –

0

No existe el nombre de archivo html.
Ciertos caracteres tienen que estar codificados en html (por ejemplo, si se usan en enlaces) pero los caracteres permitidos en los nombres de documentos dependerán del servidor web (y posiblemente del sistema de archivos en el servidor).

0

Cualquier nombre de archivo será URL-encoded por lo que debería estar bien. Y para el registro, los tres nombres de tus archivos funcionarían bien.

1

Si no desea que sus nombres de archivo sean codificados por el servidor, debe evitar los caracteres reservados: $ & +, /:; =? @ Y caracteres inseguros: espacio, comillas, <> #% {} | \^~ [] `

Pero como las respuestas anteriores indicaron, los servidores web deben hacer frente a lo que quieras usar codificando los caracteres.

2

Asegúrese de eliminar

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

que nunca se permitió que, debido a las inconsistencias en las convenciones de nomenclatura de archivos práctica habitual es utilizar a-z y 0-9 y el carácter de subrayado. El espacio es necesario para la mayoría de los usuarios, pero si puede evitar usarlo existen problemas de análisis que mejoran la confiabilidad, puede leer los rfc en mime (extensiones de correo de Internet de varias partes) para obtener una idea de lo que está involucrado.

No importa lo que haga, algo en algún lugar puede dificultar la vida, tanto que ahora uso métodos criptográficos para generar cadenas en minúscula a z alejadas y las uso como nombres de archivo, incorporando la información útil en el código fuente del archivo.

Evitar el símbolo de unión a cualquier precio, ...

+0

En su valor nominal, esta es una respuesta incorrecta. Con la excepción de "/", todos los caracteres que menciona son caracteres válidos para un nombre de archivo en sistemas tipo Unix. No deben usarse necesariamente, pero son válidos. –

+0

Como dice Jim, se supone que el tráfico del servidor codifica todo lo que no está permitido en las URL; un ejemplo principal es que el espacio es% 20 pero lo que se ve es + para espacios, que también es el carácter utilizado para + (en mi opinión no tan humilde) la situación es exactamente la de un gato persiguiendo su cola cuando ya la tiene. –

+0

Sí, Bryan, es corto y barato. Son solo las primeras cosas que elimino porque incluso si {[%%%]}. Ext lo hace a través de los saltos del servidor, confunde char [256] en fp *. (sin mencionar nulos incrustados, etc.) ¿Alguna vez se ha visto el bloqueo del sistema operativo con el operador punto en el nombre del archivo? –

0

Yo diría que una buena regla para los nombres de archivos HTML en TODOS los servidores puede ser cualquier combinación de alfabeto (minúscula preferida) y números (1 a 9), más el subrayado (_), menos (-) o más (+) caracteres pero sin espacios. Además, finalice el nombre de archivo con punto html (por ejemplo, nombredearchivo.html). Yo personalmente evito usar caracteres de subrayado y más.

Cuestiones relacionadas