gverschuur/laravel-robotstxt

该软件包已被废弃且不再维护。作者建议使用verschuur/laravel-robotstxt软件包。

根据Laravel应用环境动态设置robots.txt内容。

5.1.0 2024-09-10 19:00 UTC

This package is auto-updated.

Last update: 2024-09-10 19:02:36 UTC


README

Run tests Code Climate issues Code Climate maintainability Scrutinizer

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 testvendor/bin/phpunit --configuration phpunit.xml运行测试。

robots.txt参考

以下参考是在创建此软件包时使用的

https://developers.google.com/search/reference/robots_txt