globetrotters-ai/symfony-bundle
A Symfony bundle from Globetrotters AI that integrates the vendor's PHP services into Symfony applications, providing bundle configuration, dependency injection wiring, and a straightforward setup path for adding Globetrotters AI capabilities to new or existing projects.
php artisan vendor:publish) before touching anything else. The generated config is the source of truth for how bot rules are merged and rendered.RobotsFilter and read the AI_BOTS constant first. That list is the package's default registry of AI user-agents (now including ExaSearchBot as of v0.9.3) and is the thing most applications will interact with.robots.txt that disallows AI crawlers while leaving normal search engines alone. Wire the filter into whatever route/controller the package documents, hit /robots.txt in the browser, and confirm the output before adding any custom rules.AI_BOTS as a baseline, not a policy. Build your own list of allowed/disallowed agents in config, and use the package's registry as the default set you selectively override. This keeps you resilient when the package adds new agents in a patch release.ExaSearchBot: if a site already names that user-agent, the site's rule is kept rather than replaced by the package default. Lean on this — declare the handful of agents you care about explicitly, and let the registry cover the long tail.RobotsFilter directly from a controller or Blade view, expose something like a RobotsTxt class or a route closure that composes: global disallows → environment rules → registry defaults → sitemap directive. This gives you one place to test and one place to change ordering.app()->environment() inside the composing service, not inside the vendor class.$this->get('/robots.txt')->assertSee('User-agent: ExaSearchBot') and similar assertions catch accidental regressions when config or the bot list changes. Assert on User-agent: blocks and Disallow: lines rather than exact full-file string matches.Sitemap: directive; keeping robots and sitemap concerns in one class makes it obvious when a sitemap path changes.AI_BOTS.ExaSearchBot changes the generated file with no code change on your side. After any composer update, diff your /robots.txt output against the previous version — this is the most likely source of surprise.ExaSearchBot is not the same as exasearchbot in most implementations. Don't hand-edit the casing of names you copy out of AI_BOTS.User-agent group is significant, and rule precedence (Allow vs Disallow, longest-match) is defined by the robots.txt spec, not the package. If your rules seem ignored, check for a conflicting group for the same agent higher up in the file.ExaSearchBot keeps its own rule, an old hand-written Allow: / for that agent will survive the v0.9.3 registry addition. Grep your config/templates for agent names before assuming the package default is in effect.robots.txt is aggressively cached. After changing rules, purge your CDN and confirm with curl -I that you are not serving a stale copy — otherwise you'll debug the package for an hour when the problem is at the edge.Disallow as protection for sensitive routes; keep real authorization in middleware./robots.txt (static file in public/, nginx rule, or another package), the vendor route may never be hit. Remove the static file or check php artisan route:list to see which handler actually wins.php artisan config:cache) is the usual culprit when the AI_BOTS additions don't appear locally but do in production, or vice versa.How can I help you explore Laravel packages today?