Назад | Перейти на главную страницу

Круглые скобки в имени веб-файла apache

Я размещаю сервер изображений, куда мои клиенты загружают свои фотографии для последующего просмотра. Мы перенесли наш сайт с сервера Windows на Linux. Некоторые из наших клиентов привыкли использовать круглые скобки в именах файлов. Раньше это работало в нашей среде Windows, но не в среде Apache / Linux, в которую мы переехали, мы получаем 404. Когда мы изменяем файл, удаляя круглые скобки, мы можем его обслуживать. Есть ли способ разрешить использование скобок в имени файла для Apache?

Это потому, что скобки зарезервированы 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%29 в URI.