关于 bitrix-seo
面向 Bitrix 开发者的 SEO 模块技能,涵盖站点地图生成、robots.txt 规则及搜索引擎站点信息。它说明后台分步构建和 CLI 执行方式,并指出页面元数据与重定向应由其他模块或机制处理。
主要功能
- 01通过后台任务生成站点地图
- 02分步运行站点地图生成器
- 03读写 robots.txt 规则
- 04查询搜索引擎站点信息
- 05区分 SEO 重定向的处理位置
适用场景
- 01按后台任务重建站点地图
- 02在 robots.txt 中添加站点地图 URL
- 03通过 CLI 执行站点地图步骤
- 04确认页面元数据的管理模块
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ bxmaximum/ bitrix-framework-skills --skill bitrix-seo安装后在 Claude Code 中输入/bitrix-seo确认已加载。
详细介绍
SEO 模块(seo)
基线:main 23.0+ · 已验证:seo 26.100.0、main 26.800.0
在使用下方的任何类之前,先调用 Loader::includeModule('seo')。信息块内容的页面标题和描述不存储在此处:它们由 bitrix-iblocks 中的 InheritedProperty 管理(rules/query-seo-perf.md)。Landing 计数器和元数据:使用 bitrix-landing 中的钩子。
Sitemap
| 类 | 用途 |
|---|---|
Bitrix\Seo\Sitemap\Internals\SitemapTable | b_seo_sitemap 行:SITE_ID、ACTIVE、NAME、DATE_RUN、序列化的 SETTINGS |
Bitrix\Seo\Sitemap\Job | 由 Agent 在后台构建:markToRegenerate()、addJob()、doJobAgent()、STATUS_* |
Bitrix\Seo\Sitemap\Generator | 执行构建的一步:init($step, $state)、run()、getStep()、getState() |
Bitrix\Seo\Sitemap\Type\Step | 步骤值:Step::STEPS[Step::STEP_INIT] = 0 … Step::STEPS[Step::STEP_INDEX] = 100 |
通过表单保存的设置会经过 SitemapTable::prepareSettings($settings)。不要自行编写 XML 写入器。
后台构建(推荐):Job::markToRegenerate($sitemapId) 会创建作业和一个 Agent(首次在 60 秒后运行,之后每秒运行一次),每次访问执行一步,直到完成。Agent 必须运行(生产环境使用 cron,或使用 bitrix-background-jobs)。
进程内构建(CLI、stepper):run() 每次执行约 13 秒的一步,只有出错时才返回 false。当 getStep() 达到 Step::STEPS[Step::STEP_INDEX] 时,构建即完成。每一步都创建新的 Generator,并像 Job::doStep() 一样传递步骤和状态;跨 HTTP 请求时,需持久化二者。
use Bitrix\Seo\Sitemap\Generator;
use Bitrix\Seo\Sitemap\Type\Step;
$step = Step::getFirstStep();
$state = [];
do {
$generator = (new Generator($sitemapId))->init($step, $state);
if (!$generator->run()) {
throw new \RuntimeException($generator->getStatusMessage());
}
$step = $generator->getStep();
$state = $generator->getState();
} while ($step < Step::STEPS[Step::STEP_INDEX]);
当 SETTINGS['ROBOTS'] === 'Y' 时,最后一步会自行将 Sitemap: 行添加到 robots.txt。
管理页面:/bitrix/admin/seo_sitemap.php、seo_sitemap_edit.php。
robots.txt
use Bitrix\Seo\RobotsFile;
$robots = new RobotsFile('s1'); // site document root robots.txt
$robots->addRule([RobotsFile::SITEMAP_RULE, 'https://example.com/sitemap.xml']);
$sitemaps = $robots->getRules(RobotsFile::SITEMAP_RULE);
RobotsFile 扩展了 Bitrix\Main\IO\File;SECTION_RULE = User-Agent。管理页面:seo_robots.php。
网站站长工具和搜索引擎
- 注册表:
Bitrix\Seo\SearchEngineTable(b_seo_search_engine,键为CODE)。 Bitrix\Seo\Engine\中的引擎:Yandex(ENGINE_ID = 'yandex')、Google('google')、YandexDirect、基类YandexBase。Bitrix\Seo\Webmaster\Service::getSites()— 返回带有已绑定/已验证标记的主机。Bitrix\Seo\Service::REDIRECT_URI(/bitrix/tools/seo_client.php)是 OAuth 回调,不是 HTTP 重定向。- 旧版辅助类(仅用于兼容):
CSeoKeywords(Add/Update/GetByURL)、CSeoPageChecker、CSeoUtils::getDomainsList()。管理页面:seo_tools.php、seo_search_yandex.php、seo_search_google.php。 - 广告/再营销命名空间(
Bitrix\Seo\Retargeting\、LeadAds\、Analytics\)属于产品集成;处理 Sitemap/robots 时请跳过。
重定向:此处没有 API
内核没有用于 301/302 规则的 SEO 表。不要臆造 SeoRedirectTable。
| 需求 | 位置 |
|---|---|
| 爬取允许/禁止规则、Sitemap URL | RobotsFile、Sitemap SETTINGS |
| 开放重定向允许列表 | security 模块:CSecurityRedirect、Bitrix\Security\RedirectRuleTable |
| 页面已迁移 | Web 服务器规则、路由(bitrix-routing),或组件中的 LocalRedirect |
更改 URL 后:修复内容中的链接,调用 Job::markToRegenerate(),调整 robots。
检查清单
- 使用 Sitemap/Robots/Engine 类之前,先调用
Loader::includeModule('seo')。 - 通过
SitemapTable管理 Sitemap 行;通过Job构建,或使用传递步骤和状态的Generator步骤循环。 - 将
run() === false作为错误处理,而非“还有更多步骤”。 - 信息块元数据使用 InheritedProperty,而不是自定义的
b_seo_*列。 - 不要在
seo中臆造重定向 CRUD。