项目作者: tekord

项目描述 :
Provides various framework-agnostic ways to generate the contents of the robots.txt file
高级语言: PHP
项目地址: git://github.com/tekord/robots-txt-provider.git
创建时间: 2021-06-06T17:00:38Z
项目社区:https://github.com/tekord/robots-txt-provider

开源协议:MIT License

下载


Framework-agnostic ROBOTS.TXT File Content Generator Kit

This package provides various framework-agnostic ways to generate the contents of the robots.txt file.

Installation

Install the package via Composer:

  1. composer require tekord/robots-txt-provider

Usage

Here are the available content providers:

  • StringContentProvider - returns a plain string
  • FileContentProvider - returns the contents of the specified file
  • CallbackContentProvider - used a callback to get the value
  • CompositeContentProvider - used to compose multiple providers, returns the value of the first provider that returns a
    non-NULL value

ContentBuilder

The ContentBuilder class provides handy methods for generating content:

  1. ContentBuilder::make()
  2. ->line("User-Agent: *")
  3. ->emptyLine()
  4. ->comment("This is a comment")
  5. ->parameter("Host", "https://example.com")
  6. ->allow("/about")
  7. ->disallow("/login")
  8. ->build();

Will return the following:

  1. User-Agent: *
  2. # This is a comment
  3. Host: https://example.com
  4. Allow: /about
  5. Disallow: /login

The following methods have a conditional version: line, emptyLine, comment, parameter, allow and disallow.
Just add If to the end of the method name like lineIf. The first parameter is a condition (boolean or callback). If
the condition is TRUE then the method executes. For instance:

  1. $debugMode = true;
  2. $useSpecialUserAgent = function () {
  3. return false;
  4. };
  5. ContentBuilder::make()
  6. ->lineIf($useSpecialUserAgent, "User-Agent: Bot/1.0")
  7. ->lineIf(!$useSpecialUserAgent, "User-Agent: *")
  8. ->emptyLine()
  9. ->commentIf($debugMode, "Debug mode is active")
  10. ->parameter("Host", "https://example.com")
  11. ->disallow("/")
  12. ->build();

Will return the following:

  1. User-Agent: *
  2. # Debug mode is active
  3. Host: https://example.com
  4. Disallow: /

StringContentProvider

  1. $content = <<<'TXT'
  2. User-Agent: *
  3. Disallow: /
  4. TXT;
  5. $contentProvider = new StringContentProvider($content);

FileContentProvider

  1. $contentProvider = new FileContentProvider(__DIR__ . "/storage/static/default-robots.txt");

CallbackContentProvider

  1. $contentProvider = new CallbackContentProvider(function() {
  2. return ContentBuilder::make()
  3. ->line("User-Agent: *")
  4. ->emptyLine()
  5. ->comment("This content was generated by the CallbackContentProvider class")
  6. ->parameter("Host", "https://example.com")
  7. ->disallow("/")
  8. ->build();
  9. });

CompositeContentProvider

  1. $productionFileContentProvider = new FileContentProvider(__DIR__ . "/public/robots.production.txt");
  2. $defaultFileContentProvider = new FileContentProvider(__DIR__ . "/public/robots.default.txt");
  3. $fallbackFileContentProvider = new StringContentProvider("User-Agent: *\nDisallow: /");
  4. $compositeContentProvider = (new CompositeContentProvider())
  5. ->addContentProvider($productionFileContentProvider)
  6. ->addContentProvider($defaultFileContentProvider)
  7. ->addContentProvider($fallbackFileContentProvider);

Testing

  1. composer test

Security

If you discover any security related issues, please email cyrill@tekord.space instead of
using the issue tracker.