为什么需要 _headers 标头文件
必应、谷歌等搜索引擎会使用爬虫定期抓取互联网上的网站。通常情况下,我们会给部署在 Cloudflare Pages 上的项目配置一个自定义域,例如使用 www.example.com
指向默认的 example.pages.dev
。在搜索引擎的爬虫看来,如果这两个网站下没有配置拒绝索引的 robots.txt
或标头,那么搜索引擎会毫不犹豫的索引这两个相同内容的网站。为了使搜索引擎只收录我们希望的 www.example.com
,排除默认的 example.pages.dev
,我们需要给项目添加 _headers
标头文件。
在 Cloudflare 官方文档 中已经对 _headers 文件的使用给出了详细的说明。
如何添加
如果是直接上传文件的项目,通常只需要在根目录下新建一个 _headers
纯文本文档(没有扩展名),并输入以下内容:
https://:project.pages.dev/*
X-Robots-Tag: noindex
保存,上传,部署,配置网站就像呼吸一样自然。
但是,居然报错了,返回了403错误,大意是服务器拒绝了 API 调用的请求,这就很离谱了。我明明是在官网上部署的服务,为什么还会报错?这么离谱的 bug 早该修修了。
所以,只能通过链接 GitHub 的方式来部署项目,在项目根目录添加 _headers
文件,上传,这才部署成功,并且成功识别到了添加的标头。
Hexo 添加标头文件
在 Hexo 中,直接将 _headers
文件加入 source/
即可,并且在 _config.yml
中配置跳过渲染 _headers
文件:
skip_render:
- _headers
Hexo 在构建时默认会忽略以下划线 _
开头的文件,所以还需要在 _config.yml
中配置包含 _headers
文件:
include:
- _headers
再次运行构建,即可看到在输出网站根目录下出现了 _headers
文件。
Fuwari 主题博客
对于本博客使用的基于 Astro 构建的 Fuwari 主题,只需要将 _headers
文件加入 public/
即可,运行构建时会自动将 public
文件夹中的内容原封不动的拷贝到输出网站的根目录中,并且不会忽略以下划线 _
开头的文件。