- Caddyfile: text/plain применяется только к существующим .txt/.md - Caddyfile: несуществующие .txt/.md отдают 404 вместо HTML-фолбэка - Caddyfile: добавлены редиректы /docs/llms*.txt → /llms*.txt - Caddyfile: добавлен HTTP-заголовок Link с rel="llms" (RFC 8288) - лендинг: относительные ссылки на llms.txt заменены на абсолютные - лендинг: добавлено явное упоминание путей в тексте карточки - config: добавлены <link rel="alternate"> на llms.txt в <head> - generate-llms: добавлена генерация robots.txt и sitemap.xml
35 lines
1.4 KiB
Caddyfile
35 lines
1.4 KiB
Caddyfile
:8080 {
|
||
root * /srv
|
||
|
||
# Устаревшие пути llms.txt в подпапках → корень.
|
||
# Без этого опечатка `/docs/llms.txt` уходит в SPA-фолбэк и
|
||
# отдаёт HTML под видом text/plain — агент верит, что получил llms.txt.
|
||
redir /docs/llms.txt /llms.txt 301
|
||
redir /docs/llms-full.txt /llms-full.txt 301
|
||
|
||
# Подсказка агентам, где лежит карта документации (RFC 8288).
|
||
# Позволяет найти llms.txt без парсинга DOM — по HTTP-заголовку.
|
||
header Link "</llms.txt>; rel=\"llms\""
|
||
|
||
# Кириллица в .txt/.md ломается без явного charset.
|
||
# Применяем заголовок только к РЕАЛЬНО существующим файлам,
|
||
# иначе SPA-фолбэк (HTML) уезжает с Content-Type: text/plain.
|
||
@existingText {
|
||
path *.txt *.md
|
||
file
|
||
}
|
||
header @existingText Content-Type "text/plain; charset=utf-8"
|
||
|
||
# Несуществующие .txt/.md → 404, не HTML-фолбэк.
|
||
# Это критично для llms.txt: агент должен получить честный 404,
|
||
# а не валидный «как бы текст» с лендингом внутри.
|
||
@missingText {
|
||
path *.txt *.md
|
||
not file
|
||
}
|
||
respond @missingText 404
|
||
|
||
file_server
|
||
try_files {path} {path}/ /index.html
|
||
}
|