gverschuur / laravel-robotstxt
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 ServiceProvider 🤖
安装
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的所有路径,但拒绝生产环境上的/admin
和/images
路径上的机器人flexo
'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()辅助函数进行包装。配置文件中的网站地图条目应相对于webroot。
标准生产配置
'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参考
以下参考是在创建此软件包时使用的