anatoliy700 / yii2-robots
实现动态robots.txt文件
v2.0.0
2019-07-24 12:03 UTC
Requires
- php: >=7.2.0
- yii2-developer/yii2-configure: ~1.2.0
- yiisoft/yii2: ^2.0.0
- yiisoft/yii2-redis: ~2.0.0
Requires (Dev)
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配置