tekord/robots-txt-provider

提供各种框架无关的方式生成robots.txt文件内容

1.0 2021-06-06 17:06 UTC

This package is auto-updated.

Last update: 2024-08-29 05:42:35 UTC


README

本软件包提供各种框架无关的方式来生成robots.txt文件的内容。

安装

通过Composer安装此包

composer require tekord/robots-txt-provider

用法

以下是可以使用的内容提供者

  • StringContentProvider - 返回一个纯字符串
  • FileContentProvider - 返回指定文件的内容
  • CallbackContentProvider - 使用回调来获取值
  • CompositeContentProvider - 用于组合多个提供者,返回第一个非NULL值的提供者的值

内容构建器

ContentBuilder类提供方便的方法来生成内容

ContentBuilder::make()
    ->line("User-Agent: *")
    ->emptyLine()
    ->comment("This is a comment")
    ->parameter("Host", "https://example.com")
    ->allow("/about")
    ->disallow("/login")
    ->build();

将返回以下内容

User-Agent: *

# This is a comment
Host: https://example.com
Allow: /about
Disallow: /login

以下方法有条件版本:lineemptyLinecommentparameterallowdisallow。只需将If添加到方法名末尾,例如lineIf。第一个参数是一个条件(布尔值或回调)。如果条件为TRUE,则执行方法。例如

$debugMode = true;

$useSpecialUserAgent = function () {
    return false;
};

ContentBuilder::make()
    ->lineIf($useSpecialUserAgent, "User-Agent: Bot/1.0")
    ->lineIf(!$useSpecialUserAgent, "User-Agent: *")
    ->emptyLine()
    ->commentIf($debugMode, "Debug mode is active")
    ->parameter("Host", "https://example.com")
    ->disallow("/")
    ->build();

将返回以下内容

User-Agent: *

# Debug mode is active
Host: https://example.com
Disallow: /

StringContentProvider

$content = <<<'TXT'
User-Agent: *
Disallow: /
TXT;

$contentProvider = new StringContentProvider($content);

FileContentProvider

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

CallbackContentProvider

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

CompositeContentProvider

$productionFileContentProvider = new FileContentProvider(__DIR__ . "/public/robots.production.txt");
$defaultFileContentProvider = new FileContentProvider(__DIR__ . "/public/robots.default.txt");
$fallbackFileContentProvider = new StringContentProvider("User-Agent: *\nDisallow: /");

$compositeContentProvider = (new CompositeContentProvider())
    ->addContentProvider($productionFileContentProvider)
    ->addContentProvider($defaultFileContentProvider)
    ->addContentProvider($fallbackFileContentProvider);

测试

composer test

安全

如果您发现任何与安全相关的问题,请通过电子邮件联系 cyrill@tekord.space,而不是使用问题跟踪器。