anatoliy700/yii2-robots

实现动态robots.txt文件

安装: 2

依赖: 0

建议: 0

安全: 0

星级: 0

关注者: 1

分支: 0

开放问题: 0

类型:yii2-extension

v2.0.0 2019-07-24 12:03 UTC

This package is auto-updated.

Last update: 2024-09-25 07:42:58 UTC


README

生成robots.txt文件内容

安装

通过 Composer 安装

composer require anatoliy700/yii2-robots

或者

"anatoliy700/yii2-robots": "*"

在您的composer.json文件的require部分添加。

使用

在应用程序配置中的模块部分中连接

'modules' => [
    'robots' => [
         'class' => 'anatoliy700\robots\Module',
    ]
]

为自动添加路由规则,请添加到bootstrap

'bootstrap' => ['robots']

在容器中描述依赖

    'container' => [
        'definitions' => [
             'anatoliy700\robots\IRobots' => [
                 'class' => 'anatoliy700\robots\Robots',
                 'directives' => [
                     'User-Agent' => '*',
                     'Disallow' => [
                         '/backend',
                     ],
                 ],
             ],
             'anatoliy700\robots\directives\IDirective' => 'anatoliy700\robots\directives\Directive',
        ],
    ]

directives属性中可以指定将提供给机器人的指令。如果未指定User-Agent,则默认为User-Agent: *

blockResource属性中可以阻止整个资源,在这种情况下,其他所有指令都将被忽略。

与内容模块的页面阻止集成

为了集成,需要在描述后台页面内容的模型中添加行为

  'RobotsBehavior' => [
      'class' => 'anatoliy700\robots\behaviors\RobotsModelBehaviors',
      'route' => ['content/default/index', 'alias' => 'alias']
  ]

route属性中必须指定路由和参数,在参数数组的值中指定要从该模型属性中插入数据的名称。

在模型规则中添加

[['robotsBlockingFlag'], 'safe'],

同时还需要在checkbox表单中添加

<?= $form->field($model, 'robotsBlockingFlag')->checkbox() ?>

描述实现动态指令存储的存储库的依赖关系

  'container' => [
      'definitions' => [
           'anatoliy700\robots\repositories\IRepository' => [
               'class' => 'anatoliy700\robots\repositories\ActiveRecordRepository',
               'activeRecord' => 'anatoliy700\robots\repositories\adapters\RedisAdapter',
           ],
      ],
  ]

该存储库有一个activeRecord属性,其中指定了适配器的类(在本例中实现了针对Redis的适配器)。如果使用Redis适配器,则需要连接一个支持Redis的组件

  'components' => [
      'redis' => [
         'class' => 'yii\redis\Connection',
         'hostname' => 'REDIS_HOST',
         'port' => 'REDIS_PORT',
         'database' => 2,
      ],
  ]

为了从路由生成URI,需要描述IRouteGenerator依赖关系

    'container' => [
        'definitions' => [
            'anatoliy700\robots\generators\IRouteGenerator' => [
                'class' => 'anatoliy700\robots\generators\RouteGenerator',
                'urlManager' => [
                    'class' => 'yii\web\UrlManager',
                    'enablePrettyUrl' => true,
                    'showScriptName' => false,
                    'rules' => [...],
                ],
            ],
        ],
    ]

urlManager属性中传递包含有效路由规则的urlManager配置