---
title: 提交网站到 Google 上踩的坑
tags:
  - Hexo
  - 网站提交
  - Google
categories:
  - Hexo
keyword:
  - Hexo
titlename: 935f4e25
date: 2018-11-24 14:23:42
updated: 2019-07-19 21:04:43
keywords: [Hexo, 验证, 解决方案]
---
### 前言

其实这一篇本来可以不用写的，因为 Hexo 的生成和提交方式已经写的比较清晰明白了，怎奈在实际操作的过程中还是直接掉坑里，写这一篇就算是对操作的一个总结，顺便提醒自己不要再犯相同的问题吧...  

在安装完 Hexo 的 sitemap 组件后，接下来就是创建站点地图和提交站点进行认证（就算真的没人看，这一步也是要做的 2333）。创建站点地图很快完成了，其中 Google 一份，百度的另外还有一份，接下来就是将站点提交给 Google 和百度，然后上传自己的站点地图。从这里开始，问题就来了。  <!--more-->  

<img src="https://i.loli.net/2018/11/24/5bf91d188e582.png" style="zoom:60%" />

### 首坑：网站验证

进入Google的站点验证页面后，**输入自己要提交的网址然后确定，Google 会对此网址进行验证**，稍等片刻后，会弹出如下界面：  

![webauth-ui.png](https://i.loli.net/2018/11/24/5bf8f68424c32.png "示意图")

此时会让你选择一个验证方式，来证明这个站点是归你所有。**默认的验证方式是下载一个 HTML 文件并将其上传到自己的站点，然后访问一次，以此方式来通过验证**。  

**当然，除此之外还有别的验证方式，只是相比第一种，可能略微麻烦点**  

![webauth-ui-1.png](https://i.loli.net/2018/11/24/5bf8f78bace64.png "...")

分别是 HTML 标记验证、使用 Google 统计验证、使用 Google Tag Manager 验证和域名提供商验证。我找了一圈，实在不知道 HTML 标记应该插入到哪里，Google 说明是要求插入到网页主体部分，在 body 标记之前的段落中，然而我实在是没找到，只得放弃；第二、三种方式是因为没有对应的账户；而第四种则是因为使用了 GitHub Pages 的服务，你让我上哪找域名的提供商？（反正列表里面可没有 GitHub）。**因此，如果没有特别的原因或问题，第一种方法应该是最简单的了，也是 Google 最为推荐的方式**。  

**选择第一种方式，获得一个用于验证的 HTML 文件**。下载之后将它打开，文件内部显示是这个样子的：<span style="background:#222;color:white;">**（记住这张图！）**</span>  

![google-authcode.png](https://i.loli.net/2018/11/24/5bf90326355cd.png "你没看错，只有这一行代码")

然后将这个 HTML 文件放入到站点当中，**一切顺利，接下来开始生成、开本地服务器看一下效果，貌似也没问题，部署发布**！返回到Google的站点控制台，通过机器人验证，单击“Verify”  

**结果，直接报错了...**（原谅我那张报错的图当时没截下来，其实是当时没想到要截图...）  

一头雾水的我打开用来验证的那个网页链接，看了看地址，没错啊，那问题出在哪里呢？（问号脸）  

![error-example.png](https://i.loli.net/2018/11/24/5bf906e5e0229.png "错误截图")

我又试了几次，还是各种报错失败，这时候我又一次打开那个原始的 HTML 文件，与上传到网站的网页文件对比一下，**额...好像哪里不对？**  

**划重点：**

<span style="background:#222;color:white;">**因为原来的网页是没有这些模板元素的！有可能是因为这些加入的模板元素导致 Google 不能正常识别，于是我删掉了加入到网站的 HTML 文件，然后`hexo clean`一次，再然后`hexo d -g`一次，成功生成并部署到 GitHub 上之后再将那个 HTML 文件放入到站点根目录的`/public`文件夹中，然后再一次`hexo d`部署到 GitHub 上（这时不要`hexo clean`），刷新几次再看，就变成了一开始只有一行代码的样子，这时再进入到Google的验证页面，果不其然，一次成功了。**（事实证明这反射弧也太长了#捂脸）</span>  

事后重新看了一下Hexo的官方文档，**Hexo 使用 Markdown 作为博客的主要书写语言，而在编写完成后，Hexo 会在 hexo g 的时候将所有页面都使用指定的模板生成一遍，也就是说在这个时候原本的 HTML 文件被加上了事先预定义的样式模板，造成了与 Google 提供的文件样式不统一，导致了验证失败**；而**解决方法中，在已经上传部署的 /public 文件夹中直接放入验证文件，然后 hexo d，跳过了之前的生成环节（之前已经生成过）直接进入到部署环节，将这个文件原封不动直接上传到 GitHub 上，期间不加入任何样式模板，这样保证了源文件的格式，验证自然成功了**。  

有了之前的实践经验，接下来添加百度的站点验证就简单多了，这里倒是没有什么坑...  

### 二坑：站点地图

紧接着就是添加站点地图（sitemap），**这里需要先配置几个组件**，代码如下：  

```bash
npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save
```

**组件安装完成后，还需要在站点配置文件中新增以下条目：**  

```yaml
# 自动生成sitemap
sitemap: 
  path: sitemap.xml
baidusitemap:
  path: baidusitemap.xml 
```

**之后站点本地位置就会生成 sitemap.xml 和 baidusitemap.xml，前者提交给 Google，后者提交给百度**，这样站点地图就提交成功了。  

**但是**，这里还有一点需要注意：**站点配置文件中“url”字段之后的内容也需要修改**。示例代码如下：  

``` yaml
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: https://witherzuo.github.io
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
```

将**原有的默认字段注释删除掉，然后修改为自己的站点地址即可**。**如果这一步没有完成，在部署并生成站点地图的过程中就不会传入正确的站点地址，站点地图也就无法正常通过验证。**  

### 总结

前面写了不少，作为全文结尾，再来点总结：  

{% note danger %}

**在进行站点所有权验证时，如果选择了第一种方法，切记在部署时不要直接生成整个站点，否则用于验证的源文件会被模板样式直接覆盖掉，这种情况下由于验证源文件与 Google 提供的文件不一样，会直接导致验证失败！解决方法则是在生成并部署站点时将这个 HTML 文件移走，在部署完成后将这个文件移动回 /public 文件夹，再进行一次部署。**  

**创建站点地图文件时，记得事先修改站点配置文件中的“url”字段，然后再生成站点地图文件，不然错误的站点地图地址会导致无法正常上传。**  

{% endnote %}

**其实，出现这些问题，还是因为对 Hexo 的了解不够，现在来看，确实是给自己挖了个大坑#捂脸×2（逃**  
