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服务提供商 🤖

安装

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

robots.txt参考

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

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