Apache Web 文件名中的括号

Apache Web 文件名中的括号

我托管了一个图像服务器,我的客户会将他们的照片上传到该服务器,以便他们的客户稍后查看。我们已将网站从 Windows 服务器迁移到 Linux。我们的一些客户习惯于在文件名中使用括号。这在我们的 Windows 环境中曾经有效,但在我们迁移到的 Apache/Linux 环境中却不行,我们得到了 404。当我们修改文件并删除括号时,我们就可以提供服务了。有没有办法允许 Apache 在文件名中使用括号?

答案1

这是因为括号被保留RFC 3986和 是不允许的。如果您希望在 URL 中使用这些字符,则需要对这些字符进行百分比编码。

URIs include components and subcomponents that are delimited by
characters in the "reserved" set.  These characters are called
"reserved" because they may (or may not) be defined as delimiters by
the generic syntax, by each scheme-specific syntax, or by the
implementation-specific syntax of a URI's dereferencing algorithm.
If data for a URI component would conflict with a reserved
character's purpose as a delimiter, then the conflicting data must be
percent-encoded before the URI is formed.

   reserved    = gen-delims / sub-delims

   gen-delims  = ":" / "/" / "?" / "#" / "[" / "]" / "@"

   sub-delims  = "!" / "$" / "&" / "'" / "(" / ")"
               / "*" / "+" / "," / ";" / "="

如果您收到 404,这是因为它未编码并且实际上没有查看正确的文件,因为括号被解释为分隔符。您要做的就是,假设您有一个文件some_image_(huzzah),您需要将其表达为some_image_%28huzzah%29URI。

相关内容