用途:Bitrix 的 seo 模块,用于管理站点 SEO 基础设施,包括 sitemap.xml 的生成/重生成、robots.txt 规则,以及搜索引擎与站长工具的注册信息。基线要求 main 23.0+,已验证 seo 26.100.0、main 26.800.0。使用任何相关类前需先 Loader::includeModule('seo')。注意:信息块的页面 title/description 不存于此,走 bitrix-iblocks 的 InheritedProperty;落地页计数器与 meta 走 bitrix-landing。
主要能力:
- Sitemap:SitemapTable 对应 b_seo_sitemap 行(SITE_ID、ACTIVE、NAME、DATE_RUN、序列化 SETTINGS);Job 负责后台构建(markToRegenerate()、addJob()、doJobAgent()、STATUS_*);Generator 执行单步构建(init($step,$state)、run()、getStep()、getState());Step 定义步骤值。表单设置须经 SitemapTable::prepareSettings(),不要自己写 XML writer。
- robots.txt:RobotsFile('s1') 操作站点根 robots.txt,addRule()/getRules() 配合 SITEMAP_RULE;SECTION_RULE 即 User-Agent;继承 Bitrix\Main\IO\File。
- 搜索引擎与站长:SearchEngineTable(b_seo_search_engine,键 CODE);Engine 下有 Yandex、Google、YandexDirect、YandexBase;Webmaster\Service::getSites() 返回主机及绑定/验证标记;Service::REDIRECT_URI 是 OAuth 回调地址,不是 HTTP 重定向。
用法:后台构建推荐 Job::markToRegenerate($sitemapId),创建任务与 agent(首跑 60 秒后,之后每秒一次),每次命中执行一步直至完成;生产环境需保证 agent 运行(如 cron)。CLI/分步场景用 Generator 循环:每步新建 Generator、携带 step 与 state,run() 单步约 13 秒,仅在出错时返回 false;当 getStep() 达到 Step::STEPS[Step::STEP_INDEX] 即完成,跨 HTTP 请求需持久化 step 与 state。若 SETTINGS['ROBOTS']==='Y',最后一步会自行向 robots.txt 添加 Sitemap: 行。
适用场景与限制:适合站点地图生成/重生成、robots 规则维护、搜索引擎接入。seo 内核没有 301/302 重定向 API,不要臆造 SeoRedirectTable;开放重定向白名单在 security 模块(CSecurityRedirect、RedirectRuleTable),页面迁移用 Web 服务器规则、路由或组件中的 LocalRedirect。URL 变更后需修正内容链接、调用 markToRegenerate() 并调整 robots。旧接口(CSeoKeywords、CSeoPageChecker、CSeoUtils::getDomainsList())仅兼容用;Retargeting、LeadAds、Analytics 命名空间属产品集成,做 sitemap/robots 时可跳过。管理页包括 seo_sitemap.php、seo_sitemap_edit.php、seo_robots.php、seo_tools.php 等。