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

Как apache может обслуживать файлы с символами utf-8?

Из браузера я пытаюсь получить доступ к файлу https://example.com/86/86454cff-556a-4162-aa65-433158c133f4/Informacja+kwartalna++III+kwartał+2016+r. и я получаю ошибку 404.

Когда я проверяю файловую систему, файл существует с закодированными символами: 86/86454cff-556a-4162-aa65-433158c133f4/Informacja+kwartalna++III+kwarta%C5%82+2016+r.

Когда я перевернул списки на Apache, этот файл будет доступен по адресу https://example.com/86/86454cff-556a-4162-aa65-433158c133f4/Informacja+kwartalna++III+kwarta%25C5%2582+2016+r.

Как я могу заставить его работать, чтобы он правильно обслуживался с первым адресом? Или мне следует сохранить файл в файловой системе, используя символы utf-8 без кодирования? Что ты предлагаешь?

Имя файла не должно иметь экранирования URL в вашей файловой системе. Кодировка URL-адреса актуальна только во время HTTP-запроса от клиента к серверу, потому что в этой части вы можете использовать только символы ASCII.

Когда Apache или любой другой веб-сервер получает запрос, он сначала декодирует кодировку URL-адреса, а затем ищет имя файла.

Конечно, есть несколько способов кодирования символов Юникода. Однако кодирование имени файла выполняется системными библиотеками / файловой системой и одинаково для всех приложений. Следовательно, вам нужно только проверить, что имя файла в каталоге совпадает с тем, которое вы хотите использовать в URL-адресе браузера.

Если задействована CMS, ее реализация должна правильно поддерживать имена файлов Unicode. К сожалению, поддержка имен файлов Unicode в CMS часто бывает плохой, и вам нужно ограничиться именами файлов ASCII, чтобы все работало правильно.

Я считаю, что вы ищете .htaccess и символические ссылки. Я не помню, какие именно директивы.