Удобная библиотека для генерации файлов Robots в Laravel.
- 🤖 Поддержка основных директив Robots (User-agent, Allow, Disallow, Sitemap, Clean-param)
- 📦 Автоматическая регистрация через Laravel Package Discovery
- 🎯 Callback API для удобной конфигурации User-agent блоков
- 🔍 Встроенный Enum с популярными поисковиками
- 🧪 Базовое покрытие тестами
- 📝 Подробная документация
- PHP 8.3 или выше
- Laravel 12.x
Установите пакет через Composer:
composer require abac2500/laravel-robotsПакет автоматически зарегистрируется благодаря Laravel Package Discovery.
use Abac2500\LaravelRobots\Enums\SearchEngine;
use Abac2500\LaravelRobots\Facades\Robots;
use Abac2500\LaravelRobots\RobotsGenerator;
$robots = Robots::agent(SearchEngine::ALL, fn (RobotsGenerator $robots) =>
$robots->disallow('/example')
->allow('/public')
)
->sitemap('https://example.com/sitemap.xml')
->render();
echo $robots;Результат:
User-agent: *
Disallow: /example
Allow: /public
Sitemap: https://example.com/sitemap.xml
Библиотека предоставляет enum с популярными поисковыми системами:
use Abac2500\LaravelRobots\Enums\SearchEngine;
SearchEngine::ALL // '*'
SearchEngine::GOOGLEBOT // 'Googlebot'
SearchEngine::GOOGLEBOT_NEWS // 'Googlebot-News'
SearchEngine::GOOGLEBOT_IMAGE // 'Googlebot-Image'
SearchEngine::GOOGLEBOT_VIDEO // 'Googlebot-Video'
SearchEngine::BINGBOT // 'Bingbot'
SearchEngine::SLURP // 'Slurp'
SearchEngine::DUCKDUCKBOT // 'DuckDuckBot'
SearchEngine::BAIDUSPIDER // 'Baiduspider'
SearchEngine::FACEBOT // 'facebot'
SearchEngine::IA_ARCHIVER // 'ia_archiver'
SearchEngine::AHREFSBOT // 'AhrefsBot'
SearchEngine::YANDEX // 'Yandex'Добавить ссылку на sitemap:
// Одна Sitemap
Robots::sitemap('https://example.com/sitemap.xml');
// Несколько Sitemap
Robots::sitemap('https://example.com/sitemap.xml')
->sitemap('https://example.com/sitemap-news.xml');Создать блок директив для User-agent с использованием Callback:
// С использованием Enum
Robots::agent(SearchEngine::GOOGLEBOT, fn (RobotsGenerator $robots) =>
$robots->disallow('/example')
->allow('/')
);
// Без Callback
Robots::agent(SearchEngine::BINGBOT)
->disallow('/example');Запретить доступ к пути:
Robots::agent(SearchEngine::ALL, fn (RobotsGenerator $robots) =>
$robots->disallow('/example')
);Разрешить доступ к пути:
Robots::agent(SearchEngine::ALL, fn (RobotsGenerator $robots) =>
$robots->allow('/public')
);Директива для поисковых систем (используется Yandex):
// Один параметр
Robots::agent(SearchEngine::YANDEX, fn (RobotsGenerator $robots) =>
$robots->cleanParam('ref')
);
// С указанием пути
Robots::agent(SearchEngine::YANDEX, fn (RobotsGenerator $robots) =>
$robots->cleanParam('ref', '/example/');
});
// Несколько параметров (объединяются через &)
Robots::agent(SearchEngine::YANDEX, fn (RobotsGenerator $robots) =>
$robots->cleanParam(['ref', 'utm_source'], '/example/')
);Добавить комментарий:
Robots::comment('Комментарий');Добавить пустую строку для улучшения читаемости:
Robots::blank();Создайте маршрут для отдачи Robots:
// routes/web.php
use Abac2500\LaravelRobots\Enums\SearchEngine;
use Abac2500\LaravelRobots\Facades\Robots;
use Abac2500\LaravelRobots\RobotsGenerator;
Route::get('/robots.txt', function () {
$robots = Robots::agent(SearchEngine::ALL, fn (RobotsGenerator $robots) =>
$robots->disallow('/example')
->allow('/')
)
->sitemap(url('/sitemap.xml'))
->render();
return response($robots, 200, [
'Content-Type' => 'text/plain',
]);
});Запустить тесты:
composer install
composer testБиблиотека включает базовый набор тестов, покрывающих функции.
Этот пакет распространяется под лицензией MIT. Подробности в файле LICENSE.
Если вы обнаружили ошибку или хотите предложить улучшение, пожалуйста, создайте issue в репозитории проекта.
Abac2500 (Эдуард Кичаев)
Сделано с ❤️ для Laravel сообщества