0

0

如何通过 .htaccess 精确屏蔽爬虫对指定目录的访问

霞舞

霞舞

发布时间:2026-01-23 20:19:27

|

955人浏览过

|

来源于php中文网

原创

如何通过 .htaccess 精确屏蔽爬虫对指定目录的访问

本文详解如何在 wordpress 环境下,使用 apache 的 mod_rewrite 规则精准阻止 googlebot、bingbot、baiduspider 等主流爬虫访问特定子目录(如 `/tbd_templates/` 和 `/custom_post/`),同时保障网站其余路径正常可访问。

要在不干扰 WordPress 核心重写逻辑的前提下,仅对特定目录实施爬虫屏蔽,关键在于:将规则置于 WordPress 主规则之前,并使用精确匹配的 URL 路径正则表达式,而非全局 .* —— 后者会导致整个站点被误拦。

以下是推荐的 .htaccess 配置方案(插入在 # BEGIN WordPress 之前):

# Block crawlers from specific directories
RewriteCond %{HTTP_USER_AGENT} (googlebot|bingbot|baiduspider) [NC]
RewriteRule ^(tbd_templates|custom_post)(?:$|/) - [F]

说明与要点

Mintlify
Mintlify

帮助开发者创建和维护文档

下载
  • RewriteCond 检查请求头中的 User-Agent,支持大小写不敏感匹配([NC]);
  • RewriteRule 的模式 ^(tbd_templates|custom_post)(?:$|/) 是核心:
    • ^ 表示路径开头;
    • (tbd_templates|custom_post) 使用括号分组 + 竖线 | 实现多目录“或”匹配;
    • (?:$|/) 是非捕获组,确保匹配 /tbd_templates(无尾斜杠)、/tbd_templates/ 或 /tbd_templates/file.html,但不会匹配 /tbd_templates-old/ 或 /mytbd_templates/ 等相似路径,避免误伤;
  • [F] 标志等价于 R=403,直接返回 HTTP 403 Forbidden 响应,语义清晰且无需额外 L 标志(F 已隐含终止);
  • 无需重复声明 RewriteEngine On —— WordPress 区块中已启用,重复声明虽无害但冗余。

⚠️ 注意事项

  • 该规则仅作用于匹配路径的请求,普通用户、未命中条件的爬虫(如 DuckDuckBot)及 WordPress 其他页面(如 /wp-admin/、/blog/)完全不受影响;
  • 若需扩展更多目录,只需在正则中追加,例如:^(tbd_templates|custom_post|private_assets|staging)(?:$|/);
  • 修改后务必清除浏览器和 CDN 缓存,并用 curl -A "Googlebot" https://example.com/tbd_templates/ 实际验证响应状态码是否为 403;
  • 不建议依赖 User-Agent 屏蔽作为安全手段(可被伪造),它仅适用于 SEO 场景下的临时内容隔离(如开发模板、待上线模块)。

总结:精准路径匹配 + 条件化 User-Agent 判断 + 合理插入位置 = 安全、轻量、可维护的爬虫目录级访问控制。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

510

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

251

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

742

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

213

2023.08.11

正则表达式空格
正则表达式空格

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

351

2023.08.31

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

234

2023.11.17

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

528

2023.12.06

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

10

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

AngularJS教程
AngularJS教程

共24课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 22.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号