Главная/Журнал грабель/После статической сборки кириллица в /llms.txt превращается в кашу

После статической сборки кириллица в /llms.txt превращается в кашу

Next.js 15, output: export, route handler, отдающий текст · встретил 2026-08-01

Почему так происходит

Обработчик маршрута сам ставит заголовок content-type с charset, но при статическом экспорте он запекается в обычный файл — заголовки задаёт уже веб-сервер по расширению. Расширения .txt для сервера достаточно, чтобы отдать text/plain, но недостаточно, чтобы догадаться про UTF-8.

Что делать

Дописать кодировку на стороне веб-сервера для конкретных файлов. Заголовок в коде обработчика при этом остаётся — он работает в режиме разработки и вводит в заблуждение ровно до первого выхода в прод.

Как убедиться, что дело именно в этом

Скачать файл с прода и посмотреть заголовок ответа, а не открыть его в браузере: браузер часто угадывает кодировку сам и показывает правильный текст поверх неправильного заголовка.

Чем это кончается, если не заметить

Файл, написанный специально для ИИ-ассистентов, читается ими как мусор — и молча: ошибки нет, страница отдаётся, код ответа 200.

Рядом