Как решить вопрос пробелов и русских букв в имени файла?

С помощью Image Uploader (для Windows) выгружаю по FTP (на свой сервер vsFTPd) разные файлы в подкаталог, где находится папка домена, который управляется на одном сервере с помощью nginx. Сервер на Debian 12.

И когда выгружается файл с пробелами, то наблюдаю, что они заменяются нижним подчёркиванием. Image Uploader после выгрузки выдаёт автоматически URL. Например

https://mysite.com/imgupl/iu/953790755_%D0%94%D0%B5%D0%B8%D0%BD%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D1%8F%D1%82%D0%BE%D1%80.html

Где число до подчёркивания это рандомный ID, остальное слово Деинсталлятор, согласно URI.

Соответственно файл при попытке скачать, выдаёт 404, потому что на диске файл с подчёркиванием и нормальной кириллицей.

Вопрос - как сделать, чтобы nginx принимал файлы, как есть? Или хотя бы перекодированными в URI.

Конфиги чистил практически до нуля. Хотя у меня и там минимальный набор в 5 строчек.


Ответы (1 шт):

Автор решения: SeVlad

Вопрос - как сделать, чтобы nginx или apache (хотя бы одно из двух) принимал файлы, как есть?

Он и принимает "как есть". Просто никакой кириллицы в урлах не существует.

В apache русские символы превращаются при выгрузке в такое "Деинсталлятор" Т

Это проблемы с перекодированием. Имена файлов написаны win-1251, а аппач выдаёт в UTF8.

Или хотя бы перекодированными в URI.

Для этого нужно файлы загружать через php-скрипт (или что-то подобное), который будет этим заниматься (транслитерировать).

А вообще лучше обзавестись правильной привычкой давать файлам названия в латинице без пробелов.

→ Ссылка