如何仅向Yandex爬虫展示WordPress特定页面的meta标签
解决方案:结合爬虫检测与原有页面模板条件
最简单的实现方式就是在你现有的PHP条件外层,再嵌套一层Yandex爬虫检测逻辑——通过判断请求的User-Agent头是否包含Yandex爬虫的标识,来决定是否输出目标meta标签。
基础实现代码
直接修改你现有的代码,加入爬虫检测:
<?php // 检测是否为Yandex爬虫(匹配标准桌面爬虫) $is_yandex_crawler = strpos($_SERVER['HTTP_USER_AGENT'], 'YandexBot') !== false; // 同时满足:是指定模板页面 + 是Yandex爬虫 if (is_page_template('template.php') && $is_yandex_crawler) : ?> <meta name="fragment" content="!"> <?php endif; ?>
优化版:覆盖更多Yandex爬虫类型
Yandex还有移动版爬虫(YandexMobileBot),如果需要覆盖这类场景,可以用正则匹配来兼容更多爬虫标识:
<?php $user_agent = $_SERVER['HTTP_USER_AGENT']; // 不区分大小写匹配Yandex桌面/移动爬虫 $is_yandex_crawler = preg_match('/Yandex(?:Mobile)?Bot/i', $user_agent); if (is_page_template('template.php') && $is_yandex_crawler) : ?> <meta name="fragment" content="!"> <?php endif; ?>
原理说明
- 爬虫识别:Yandex的官方爬虫会在请求头的
User-Agent中携带YandexBot(桌面)或YandexMobileBot(移动)的标识,我们通过检测这个字符串来判断访客是否是Yandex爬虫。 - 条件叠加:保留你原有的
is_page_template判断,确保只有访问指定模板页面的Yandex爬虫才会看到这个meta标签,其他爬虫或普通访客都不会加载该标签。
注意事项
$_SERVER['HTTP_USER_AGENT']在绝大多数服务器环境下都能正常获取,但如果你的主机有特殊配置导致该变量不可用,可以考虑使用WordPress的wp_get_user_agent()函数替代。- 虽然存在爬虫伪造
User-Agent的可能性,但正常情况下Yandex官方爬虫不会这么做,这个方案足够满足你的需求。
内容的提问来源于stack exchange,提问作者Ted
相关产品推荐
相关产品推荐

