Skip to content

Abac2500/laravel-robots

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Robots

Версия PHP Версия Laravel Лицензия

Удобная библиотека для генерации файлов 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

SearchEngine Enum

Библиотека предоставляет 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:

// Одна 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

Создать блок директив для User-agent с использованием Callback:

// С использованием Enum
Robots::agent(SearchEngine::GOOGLEBOT, fn (RobotsGenerator $robots) =>
    $robots->disallow('/example')
        ->allow('/')
);

// Без Callback
Robots::agent(SearchEngine::BINGBOT)
    ->disallow('/example');

Disallow

Запретить доступ к пути:

Robots::agent(SearchEngine::ALL, fn (RobotsGenerator $robots) =>
    $robots->disallow('/example')
);

Allow

Разрешить доступ к пути:

Robots::agent(SearchEngine::ALL, fn (RobotsGenerator $robots) =>
    $robots->allow('/public')
);

Clean-param

Директива для поисковых систем (используется 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 сообщества

About

Библиотека Laravel для генерации файлов Robots

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages