Web服务器文件名的Legal / Allowed字符是什么?

时间:2009-09-28 17:23:13

标签: html web

所有服务器(* nix,Windows等)上的HTML文件的文件名中允许使用哪些字符? 我正在寻找适用于所有服务器的“最低标准”。 使用:我正在命名一个公开提供的文件(Mysite.com/My-Page.htm)

,例如,空间? _ - 等等。

例如,我可以使用File-Name.htm,File_Name.htm文件名.htm吗?

显然,这需要适用于所有服务器和浏览器。 (IIRC,名称受服务器限制,而不是浏览器,但我可能错了)。

6 个答案:

答案 0 :(得分:20)

  

服务器上的HTML文件的文件名中允许使用哪些字符?

这完全取决于服务器。 HTTP本身允许任何字符,包括控制字符和非ASCII字符,只要它们在URL中被请求时适当地被%编码。

在Unix服务器上,您不能使用'/'或零字节。 (如果你可以使用它们,它们分别在URL中显示为'%2F'和'%00'。)你也不能拥有特定的文件名'。'或'..',或空字符串。

在Windows服务器上,您具有Unix服务器的所有限制,另外您也不能使用任何\/:*?"<>|或控制字符1-31,并且您不能使用前导或尾随点或空格,并且您将难以使用任何遗留设备文件名(CON,PRN,COM1等等)。

这与HTTP无关;文件名如何在Windows上运行,complicated

  

我可以使用File-Name.htm,File_Name.htm文件Name.htm吗?

当然可以。但在最后一种情况下,您应该通过URL编码空间链接到它:

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

浏览器通常会让你离开这个空间,但它并没有真正有效。如果您想避免考虑URL转义,HTML转义和区分大小写的问题,请坚持使用a-z,0-9和下划线。

答案 1 :(得分:2)

一定要消除

  

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

由于文件命名约定不一致,从不允许

标准做法是使用a-z和0-9以及下划线字符。对于大多数用户来说空间是必需的,但是如果您可以远离使用它,那么解析问题可以提高可靠性,您可以阅读mf(多部分互联网邮件扩展)上的rfc,以了解所涉及的内容。

无论你做什么,某些地方的东西都可能让生活变得困难 - 以至于我现在使用加密方法生成随机的az小写字符串并将其用作文件名,将有用的信息嵌入到文件源代码中。 / p>

不惜任何代价避免使用&符号,......

答案 2 :(得分:1)

如果您不希望服务器对您的文件名进行编码,则应避免使用保留字符:$&amp; +,/:; =?@和不安全字符:空格,引号,&lt;&gt;#% {} | \ ^〜[]`

但是,正如之前的答案所述,网络服务器应该通过编码字符来处理您想要使用的任何内容。

答案 3 :(得分:0)

没有html文件名这样的东西 某些字符必须以html编码(例如,如果在链接中使用),但文档名称中允许的字符将取决于Web服务器(可能还取决于服务器上的文件系统)。

答案 4 :(得分:0)

任何文件名都是URL-encoded所以你应该没问题。为了记录,你的所有三个文件名都可以正常工作。

答案 5 :(得分:0)

我想说所有服务器上HTML文件的文件名都有一个好的经验法则可以是字母表(小写首选)和数字字符(1到9)的任意组合,加上下划线(_),减号( - )或加号(+)但没有空格。另外,用点html结束文件名(例如filename.html)。我个人避免使用下划线和加号字符。