verschuur / laravel-robotstxt
根据Laravel应用环境动态设置robots.txt内容。
Requires
- php: ^8.0
- laravel/framework: ^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.0|^10.0
README
为Laravel提供动态robots.txt服务提供商 🤖
安装
Composer
composer require verschuur/laravel-robotstxt
手动
将以下内容添加到您的composer.json
文件中,然后运行composer install
。
{ "require": { "verschuur/laravel-robotstxt": "^3.0" } }
服务提供商注册
此包支持Laravel的服务提供商自动发现,所以就这样。如果您想手动注册包,请将ServiceProvider添加到config/app.php
文件中的providers数组中。
Verschuur\Laravel\RobotsTxt\Providers\RobotsTxtProvider::class
使用
基本使用
此包将为您的应用程序添加一个/robots.txt
路由。请记住,从您的/public
目录中删除物理的robots.txt
文件,否则它将优先于Laravel的路由和此包将无法工作。
默认情况下,production
环境将显示
User-agent: *
Disallow:
而其他所有环境将显示
User-agent: *
Disallow: /
这将允许默认安装允许生产环境上的所有机器人,而在其他每个环境中禁止机器人。
自定义设置
如果您需要自定义网站地图条目,发布配置文件
php artisan vendor:publish --provider="Verschuur\Laravel\RobotsTxt\RobotsTxtProvider"
这将把robots-txt.php
配置文件复制到您的应用程序的config
文件夹中。在这个文件中,您将找到以下数组结构
'environments' => [ '{environment name}' => [ 'paths' => [ '{robot name}' => [ 'disallow' => [ '' ], 'allow' => [] ], ] ] ]
其中
{环境名称}
:定义路径的环境。{机器人名称}
:定义路径的机器人。disallow
:将用于disallow
指令的所有条目。allow
:将用于allow
指令的所有条目。
默认情况下,环境名称设置为production
,机器人名称为*
,disallow条目为空字符串。这将允许所有机器人访问生产环境上的所有路径。
注意:如果您在此配置文件中未定义任何环境(即空配置),则默认情况下将禁止所有机器人访问所有路径。
示例
为了简洁,以下示例中省略了environment
数组键。
在生产和测试环境中允许所有路径,并禁止所有路径。
'production' => [ 'paths' => [ '*' => [ 'disallow' => [ '' ] ] ] ], 'staging' => [ 'paths' => [ '*' => [ 'disallow' => [ '/' ] ] ] ]
允许生产环境中所有机器人bender的所有路径,但对于机器人flexo禁止/admin
和/images
路径。
'production' => [ 'paths' => [ 'bender' => [ 'disallow' => [ '' ] ], 'flexo' => [ 'disallow' => [ '/admin', '/images' ] ] ] ],
允许指令
除了更标准的disallow
指令外,还支持allow
指令。
允许一个路径,但禁止子路径
'production' => [ 'paths' => [ '*' => [ 'disallow' => [ '/foo/bar' ], 'allow' => [ '/foo' ] ] ] ],
在文件渲染时,总是将disallow
指令放在allow
指令之前。
如果您不需要一个或另一个指令,并且希望保持配置文件干净,您可以简单地从整个数组中删除整个键。
网站地图
此包还允许向robots文件中添加网站地图。默认情况下,生产环境将向文件添加sitemap.xml条目。如果您不需要它,可以从中删除此默认条目。
因为网站地图始终需要绝对URL,所以它们会自动使用Laravel的url()辅助函数进行包装。配置文件中的网站地图条目应该相对于网站根目录。
标准生产配置
'environments' => [ 'production' => [ 'sitemaps' => [ 'sitemap.xml' ] ] ]
添加多个网站地图
'environments' => [ 'production' => [ 'sitemaps' => [ 'sitemap-articles.xml', 'sitemap-products.xml', 'sitemap-etcetera.xml' ] ] ]
兼容性
本软件包与Laravel 9和10兼容。有关支持的Laravel和PHP版本的完整概述,请参阅'运行测试'工作流程。
测试
PHPUnit测试用例位于/tests
目录中。通过composer run test
或vendor/bin/phpunit --configuration phpunit.xml
运行测试。
robots.txt参考
以下参考是在创建此软件包时使用的