opensearch.xml 是用于声明网站站内搜索功能的标准 XML 文件,需置于根目录,并通过 标签在 HTML 中声明;其核心字段包括 ShortName、Description、Url(含 {searchTerms} 占位符)、InputEncoding 和 Language。

opensearch.xml 是一个标准的 XML 文件,用来告诉浏览器或搜索引擎:你的网站支持站内搜索,并提供搜索接口的元信息。它通常放在网站根目录(比如 https://example.com/opensearch.xml),用户在浏览器地址栏输入关键词后按 Tab 键,或在某些浏览器中点击搜索框时,就能直接用你的站内搜索。
基本结构和必填字段
一个最小可用的 `opensearch.xml` 至少包含以下元素:
- ShortName:简短名称(最多 16 字符),显示在浏览器搜索框里
- Description:描述(建议简洁说明搜索范围,如“搜索本站文章”)
-
Url:搜索请求的模板 URL,必须含
{searchTerms}占位符 -
InputEncoding:推荐设为
UTF-8 -
Language:语言代码,如
zh-CN或en-US
示例(适配中文网站):
我的博客 搜索本站所有文章 blog search admin@example.com UTF-8 zh-CN
Url 模板怎么写才有效
关键在 标签里的 template 属性,它定义了用户搜索时浏览器实际发起的请求地址。
- 必须使用
{searchTerms}(不能拼错,区分大小写)作为关键词占位符 - 支持多个参数,例如:
https://example.com/search?q={searchTerms}&site=blog - 如果网站用 GET 参数传递搜索词,就按实际参数名写(如
q、keyword、s等) - type 属性推荐用
text/html;若提供 JSON API 可加application/json,但浏览器只认 HTML 类型用于地址栏搜索
常见错误:
- 写成
{searchterm}或{query}→ 浏览器无法替换,搜索失效 - URL 中没做 URL 编码 → 实际搜索含空格或特殊字符会出错(浏览器会自动编码,你只需写原始模板)
- 用了相对路径(如
/search?q=...)→ 必须是绝对 URL(含协议和域名)
如何让浏览器自动发现这个文件
仅放好 `opensearch.xml` 不够,还需在网站每个页面的 `
-
title值要和 XML 里的一致,否则部分浏览器可能忽略 -
href可以是绝对路径(/opensearch.xml)或完整 URL(https://example.com/opensearch.xml) - 建议放在 `` 靠前位置,确保加载优先级
Chrome、Firefox、Edge 等主流桌面浏览器都支持该机制(移动端支持有限)。
可选但实用的增强项
虽然不是必需,加上这些能让体验更完善:
-
Tags:空格分隔的关键词,帮助分类(如
tech blog documentation) - Contact:邮箱,方便索引方联系(非公开暴露风险低)
-
Image:16×16 或 64×64 PNG 图标,显示在搜索框旁(需指定
type="image/x-icon"和width/height) - Query role="example":在 XML 内添加示例搜索,部分浏览器会显示提示(如“搜索示例:Vue”)
带图标的完整示例片段:
https://example.com/favicon.ico
基本上就这些。不复杂但容易忽略细节,重点是 URL 模板写对、link 标签加对、XML 放对位置(根目录)。上线后可以用 Firefox 地址栏测试:输入域名回车 → 点击右上角搜索框下拉箭头 → 应该能看到你的站点名。










