<!-- Generated from ru/llms-txt-laravel/index.html. The canonical document is the HTML page. -->

- [ Главная ](/ru/) 
/
- [ Как создать ](/ru/how-to-create/) 
/
- Руководство по Laravel            
# `llms.txt` для Laravel

Каталог public/ в Laravel является корневым веб-каталогом и не требует настройки. Для динамической генерации добавьте маршрут в routes/web.php или отдельный контроллер с фасадом Cache от Laravel.

Последнее обновление: 22 апреля 2026 г.

На этой странице

- [ Вариант 1: статический файл в public/ ](#static)
- [ Вариант 2: маршрут в routes/web.php ](#route)
- [ Вариант 3: контроллер с кешированием ](#controller)
- [ Макрос ответа для повторного использования ](#macro)
- [ Проверить ](#verify)
- [ Контрольный список перед выпуском ](#checklist)              
Предупреждение

НЕ используйте шаблоны Blade

Никогда не возвращайте представление Blade для  llms.txt . Blade добавляет
HTML-комментарии, пробелы и объявления doctype, нарушающие формат обычного текста. Всегда
возвращайте необработанный  response()  с помощью  Content-Type: text/plain .

## Вариант 1: статический файл в public/

Laravel `public/` каталог — это корень документов, который отдаёт nginx или Apache. Любой
помещённый туда файл доступен по соответствующему URL-пути без настройки маршрутизации. Это самый
простой подход, не требующий изменений кода.
public/llms.txt, directory structure    Копировать     

```
# Laravel static file approach
#
# Laravel's public/ directory is the web root (served by nginx/Apache).
# Drop your file here and it is immediately available at /llms.txt.
#
# Project structure:
# your-laravel-app/
# ├── public/
# │   ├── index.php
# │   └── llms.txt   ← add this
# ├── routes/
# └── app/
#
# No code change needed. Works on Forge, Vapor, Heroku, and bare VPS.

```

Этот подход работает со всеми вариантами развёртывания Laravel: **Laravel Forge**, **Laravel Vapor**, **Heroku**, **Railway**, а также
обычные VPS-серверы. Веб-сервер (nginx/Apache) предоставляет файл напрямую, не задействуя PHP,
что также быстрее.

## Вариант 2: маршрут в routes/web.php

Если вы хотите генерировать контент программно или управлять им из кода, а не из файла, добавьте
именованный маршрут в `routes/web.php`:
routes/web.php    Копировать     

```
One-sentence description of what your site or product does.

## Documentation

- [Getting Started](https://yoursite.com/docs/start): Install and configure in minutes.
- [API Reference](https://yoursite.com/docs/api): Full endpoint catalog with examples.

## Product

- [Overview](https://yoursite.com/product): Core features and capabilities.
- [Pricing](https://yoursite.com/pricing): Plans and billing details.

## Optional

- [Changelog](https://yoursite.com/changelog): Release history.
LLMS;

return response($content, 200)
->header('Content-Type', 'text/plain; charset=utf-8')
->header('Cache-Control', 'public, max-age=3600, stale-while-revalidate=86400');
})->name('llms-txt');

```

Используйте синтаксис heredoc в PHP (`  
Пример

Размещение маршрута

Зарегистрируйте  /llms.txt  маршрут до любых catch-all или резервных маршрутов ( Route::fallback() ) чтобы убедиться, что Laravel корректно ей соответствует.

## Вариант 3: контроллер с кэшированием

Для контента, который динамически создаётся из базы данных, например для публикации страниц
документации, используйте отдельный вызываемый контроллер с `Cache::remember()` чтобы избежать запроса к базе данных при каждом обращении:
app/Http/Controllers/LlmsTxtController.php    Копировать     

```
buildContent();
});

return response($content, 200)
->header('Content-Type', 'text/plain; charset=utf-8')
->header('Cache-Control', 'public, max-age=3600, stale-while-revalidate=86400');
}

private function buildContent(): string
{
// You can query your database here:
// $docs = \App\Models\Doc::published()->get();
// $links = $docs->map(fn($d) => "- [{$d->title}](https://yoursite.com/docs/{$d->slug}): {$d->summary}")->join("\n");

return   One-sentence description of your product.

## Documentation

- [Getting Started](https://yoursite.com/docs/start): Install and configure in minutes.
- [API Reference](https://yoursite.com/docs/api): Full endpoint catalog with examples.

## Optional

- [Changelog](https://yoursite.com/changelog): Release history.
LLMS;
}
}

```
routes/web.php, controller registration    Копировать     

```
name('llms-txt');

```

`Cache::remember()` хранит результат в настроенном драйвере кэша (Redis, Memcached, базе
данных или файле). Кэш автоматически обновляется через 3600 секунд. Чтобы немедленно удалить его после
обновления контента, вызовите `Cache::forget('llms_txt')` в observer вашей модели или после хука развёртывания.

## Макрос ответа для повторного использования

Если вы отдаёте несколько текстовых файлов или хотите единообразный шаблон для своего
приложения, зарегистрируйте `plaintext()` макроса ответа в `AppServiceProvider`:
app/Providers/AppServiceProvider.php    Копировать     

```
'text/plain; charset=utf-8',
'Cache-Control' => "public, max-age={$maxAge}, stale-while-revalidate=86400",
]);
});
}
}

// Usage in a route or controller:
// return response()->plaintext($content);

```

После этого макрос доступен в любой части приложения через `response()->plaintext($content)`, сохраняя `Content-Type` и `Cache-Control` заголовки согласованными.

## Проверить

После развёртывания убедитесь, что файл обслуживается корректно:
Verification    Копировать     

```
curl -I https://yoursite.com/llms.txt
# Expected:
# HTTP/2 200
# content-type: text/plain; charset=utf-8
# cache-control: public, max-age=3600

curl https://yoursite.com/llms.txt | head -5
# Should print: # Your Site
```

Затем вставьте URL в [Валидатор llms.txt](/ru/validator/) для проверки полного соответствия
спецификации .

## Контрольный список перед выпуском

- Файл отдан по адресу `/llms.txt` с помощью `200 OK`. 
- `Content-Type: text/plain; charset=utf-8` установлен. 
- `Cache-Control` заголовок присутствует. 
- Ответ представляет собой обычный текст: без HTML и без вывода Blade. 
- Ровно один заголовок H1 в начале. 
- Сводка в blockquote сразу после H1. 
- Все URL абсолютны (`https://`). 
- Аутентификационное промежуточное ПО не применяется к `/llms.txt` маршрута. 
- Валидатор не возвращает ошибок: [llmtxt.info/validator/](/ru/validator/)   
## Связанные руководства

- [Как создать llms.txt](/ru/how-to-create/), шаблоны и контрольный список. 
- [Справочник формата llms.txt](/ru/llms-txt-format/), подробности спецификации. 
- [llms.txt для headless CMS](/ru/llms-txt-cms/), Contentful, Sanity, Strapi. 
- [Лучшие практики](/ru/best-practices/), что включать, а что пропускать. 
- [Валидатор](/ru/validator/) · [Генератор](/ru/generator/).        
## Источники

- [ llmstxt.org, предложение сообщества ](https://llmstxt.org/)
- [ Документация Laravel, маршрутизация ](https://laravel.com/framework/docs/routing)
- [ Документация Laravel, кэш ](https://laravel.com/framework/docs/cache)
