开发完网站后,可以向搜索引擎提交索引请求,让网页有机会出现在搜索结果中。
如果希望网页变更尽快反映到搜索结果里,及时发送
索引请求
很重要。过去主要靠提交站点地图或手动请求索引,现在可以通过名为
IndexNow
的标准协议自动提交请求。
Naver 自 2023 年起正式支持 IndexNow,让开发者更容易将网页更新通知给搜索引擎。本文将依据官方文档,逐步介绍 IndexNow 的工作流程及如何接入 Naver。
- 可以快速向搜索引擎发送索引请求。
- 无需 sitemap.xml 也能通知 URL 变更。
- 可以
一次
向多个搜索引擎发出索引请求。
支持 IndexNow 的代表性搜索引擎包括:
IndexNow 的基本流程如下。
生成并验证密钥
生成专用密钥以验证网站所有权,并将密钥文件上传到网站根目录。原文在此称文件为 JSON 格式,后文的实际上传步骤使用 TXT 文件。
提交 URL
创建或修改网页后,通过 POST 将相应的 URL 提交给 IndexNow API。
搜索引擎更新索引
搜索引擎收到请求后抓取对应 URL,再更新搜索结果。
要使用 IndexNow,先生成专用密钥。密钥由字母、数字和连字符组成,长度至少 8 个字符,最多 128 个字符。
这里使用 Bing 提供的密钥。打开
Bing - IndexNow↗ 页面,按下例生成密钥。
生成的密钥类似
abc123...。生成后,需要将密钥上传到网站根目录。将以密钥命名的 TXT 文件上传到网站根目录。
abc123....txt
该文件必须能通过 https://yourdomain.com/abc123... 访问。也可以上传到其他目录,但原文不推荐这么做。
只提交一个 URL 时,可以发送 GET 请求,把 URL 作为查询参数传入。
https://<searchengine>/indexnow?url=url-changed&key=your-key
例如,要提交 https://yourdomain.com/updated-page,可以按以下方式发送请求。
https://<searchengine>/indexnow?url=https://yourdomain.com/updated-page&key=abc123...
向 IndexNow 批量提交 URL 时,发送如下 POST 请求。以下是 TypeScript 示例。
import axios from 'axios'
const INDEXNOW_API = '<searchengine-host-url>'
async function sendToIndexNow(urls: string[], key: string) {
await axios.post(INDEXNOW_API, {
host: 'yourdomain.com',
key,
keyLocation: `https://yourdomain.com/${key}`,
urlList: urls
})
}
将 URL 列表和密钥传入这个函数,对应的 URL 就会自动提交给搜索引擎。每次请求最多可以提交 10,000 个 URL,需要时可以混合提交 HTTP 与 HTTPS URL。
接入 Naver Search Advisor 🔗
{
"host": "yourdomain.com",
"key": "naver-issued-key",
"keyLocation": "https://yourdomain.com/naver-issued-key",
"urlList": [
"https://yourdomain.com/updated-page"
]
}
以下是使用 IndexNow 时的常见问题及解决方法。
- 无法访问密钥文件:检查文件名或位置是否有误。
- 出现 400 或 403 错误:很可能是请求格式错误或验证失败。
- 需要给不同搜索引擎配置不同的密钥吗?Naver 和 Bing 可以使用不同的密钥,也可以共用同一密钥。
IndexNow 不提供浏览器跨域请求所需的支持,因此建议直接从服务器发送请求。从客户端发起请求可能遇到 CORS 错误。
从服务器发送请求更稳妥。下面是在 Node.js 服务器中用 axios 发送请求的示例。
import axios from 'axios'
const INDEXNOW_API = '<searchengine-host-url>'
async function sendToIndexNow(urls: string[], key: string) {
await axios.post(INDEXNOW_API, {
host: 'yourdomain.com',
key,
keyLocation: `https://yourdomain.com/${key}`,
urlList: urls
})
}
这样可以避开 CORS 问题。直接从服务器发送请求是稳妥、高效的方法。
curl -X POST -H "Content-Type: application/json" -d '{
"host": "yourdomain.com",
"key": "naver-issued-key",
"keyLocation": "https://yourdomain.com/naver-issued-key",
"urlList": [
"https://yourdomain.com/updated-page"
]
}' https://api.searchadvisor.naver.com/indexnow
可以按上述格式发送请求。这种方式适合快速测试。
也可以使用 Postman 等工具。
IndexNow 可以帮助网站更快地将变更反映到搜索结果中。Naver 的正式支持也让它成为需要优化搜索表现的韩国网站运营者的实用工具。
通过 Search Advisor 获取密钥和配置 API 请求需要一些准备,但配置完成后,只需一行代码就可以提交索引请求,减少重复操作。
- 可以把更新检测逻辑与 IndexNow 请求结合起来,实现自动通知。
- 保留 sitemap.xml 的同时使用 IndexNow,有助于减少遗漏索引的概率。
- 原文写作时,Google 尚不支持 IndexNow,可以继续关注后续动向。