tekord / robots-txt-provider
提供各种框架无关的方式生成robots.txt文件内容
1.0
2021-06-06 17:06 UTC
Requires
- php: ^7.4|^8.0
Requires (Dev)
- phpunit/phpunit: ^9.3
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
以下方法有条件版本:line
、emptyLine
、comment
、parameter
、allow
和disallow
。只需将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,而不是使用问题跟踪器。