微信现已开放小程序内搜索,开发者可以通过 sitemap.json
配置,或者管理后台页面收录开关来配置其小程序页面是否允许微信索引。当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引。当用户的搜索词条触发该索引时,小程序的页面将可能展示在搜索结果中。
爬虫访问小程序内页面时,会携带特定的 user-agent:mpcrawler
及场景值:1129
。需要注意的是,若小程序爬虫发现的页面数据和真实用户的呈现不一致,那么该页面将不会进入索引中。
具体配置说明
- 页面收录设置:可对整个小程序的索引进行关闭,小程序管理后台-功能-页面内容接入-页面收录开关;详情
- sitemap 配置:可对特定页面的索引进行关闭
# 小程序页面接入效果优化建议
- 建议开启“收录设置”,增加页面被收录的机会若关闭,则小程序首页以外的页面将不会再被收录,也就不会被抓取
- 除个人隐私、通信信息、商业秘密等内容页面,其余页面建议在 sitemap 配置(sitemap.json文件)中设置允许
- 根据用户服务器性能,建议在合适范围内增大 “频率上限”设置
- 小程序页面配置文件(app.json)建议保持完整和最新 a. title:建议每个页面设置清晰简洁的 navigationBarTitleText b. tabBar:建议每个tab页面设置清晰简洁的 pagePath、text
- 小程序里跳转的页面(url)可以被直接打开 a. 小程序页面内的跳转url是我们爬虫发现页面的重要来源,且搜索引擎召回的结果页面 (url) 是必须能直接打开,不依赖上下文状态的。特别的:建议页面所需的参数都包含在url
- 页面跳转优先采用navigator组件,小程序提供了两种页面路由方式:
a. navigator 组件
b. 路由 API,包括 navigateTo / redirectTo / switchTab / navigateBack / reLaunch - 清晰简洁的页面参数结构清晰、简洁、参数有含义的 querystring 对抓取以及后续的分析都有很大帮助
- 必要的时候才请求用户进行授权、登录、绑定手机号等操作 a. 建议在必须的时候才要求用户授权(比如阅读文章可以匿名,而发表评论需要留名)
- web-view 中的内容建议必要时才对请求用户进行鉴权
- 设置一个清晰的标题和页面缩略图 a. 页面标题和缩略图对于我们理解页面和提高曝光转化有重要的作用。 b. 通过wx.setNavigationBarTitle或 自定义转发内容onShareAppMessage对页面的标题和缩略图设置
# sitemap 配置
小程序根目录下的 sitemap.json
文件用来配置小程序及其页面是否允许被微信索引。
完整配置项说明请参考小程序 sitemap 配置
例1:
{
"rules":[{
"action": "allow",
"page": "*"
}]
}
所有页面都会被微信索引(默认情况)
例2:
{
"rules":[{
"action": "disallow",
"page": "path/to/page"
}]
}
配置 path/to/page
页面不被索引,其余页面允许被索引
例3:
{
"rules":[{
"action": "allow",
"page": "path/to/page"
}, {
"action": "disallow",
"page": "*"
}]
}
配置 path/to/page
页面被索引,其余页面不被索引
例4:
{
"rules":[{
"action": "allow",
"page": "path/to/page",
"params": ["a", "b"],
"matching": "inclusive"
}, {
"action": "allow",
"page": "*"
}]
}
包含 a 和 b
参数的 path/to/page
页面会被微信优先索引,其他页面都会被索引,例如:
path/to/page?a=1&b=2
=> 优先被索引path/to/page?a=1&b=2&c=3
=> 优先被索引path/to/page
=> 被索引path/to/page?a=1
=> 被索引- 其他页面都会被索引
例5:
{
"rules":[{
"action": "allow",
"page": "path/to/page",
"params": ["a", "b"],
"matching": "inclusive"
}, {
"action": "disallow",
"page": "*"
}, {
"action": "allow",
"page": "*"
}]
}
path/to/page?a=1&b=2
=> 优先被索引path/to/page?a=1&b=2&c=3
=> 优先被索引path/to/page
=> 不被索引path/to/page?a=1
=> 不被索引- 其他页面由于命中第二条规则,所以不会被索引
- 由于优先级的问题,第三条规则是没有意义的
注:没有 sitemap.json 则默认所有页面都能被索引
注:{"action": "allow", "page": "*"}
是优先级最低的默认规则,未显式指明 "disallow" 的都默认被索引
# 如何调试
当在小程序项目中设置了 sitemap
的配置文件(默认为 sitemap.json
)时,便可在开发者工具控制台上显示当前页面是否被索引的调试信息( 最新版本的开发者工具支持索引提示)
注:sitemap
的索引提示是默认开启的,如需要关闭 sitemap
的索引提示,可在小程序项目配置文件 project.config.json
的 setting
中配置字段 checkSiteMap
为 false
注: sitemap
文件内容最大为 5120 个 UTF8 字符