每天一点产品思考(4):如何设计404页面?
一.被开发鄙视的设计
昨天阿白花了整整一天时间设计一个关于“问题详情”的原型,今天早上美滋滋的交付给开发,开发看了一眼,问了一句,如果我打开的页面不存在,“Not Found”怎么搞呢?阿白一脸疑惑,问“啥是Not Found?”,开发一脸鄙视,就是你平常看到的“404”页面,阿白有点不好意思,“哦哦,404啊,我还真忘了,我这就给你补上。”
二.被乖哥Diss的设计
阿白回到工位,立刻补了一张404页面,大概就长下面这个样子吧。
开发拿到添加了404页面的原型,觉得整个流程是闭环了,也没啥问题,就没说多话。阿白很开心,接下来就等下午的需求评审会了,打好最后一仗就可以轻松一下了。
乖哥问了下阿白,“昨天设计原型的工作怎么样了?”阿白一脸自豪,“哦哦,已经交付了,唯一一点问题就是忘记了添加404页面,现在已经添加了。”乖哥打开原型,大致看了一下,然后把阿白喊过来,问“你觉得你的404页面有什么问题吗?”阿白看乖哥一脸严肃的样子,但是又不知道自己哪里出了问题,怯怯的说“我看了挺多其他产品的404页面,差不多都长这个样子,应该没啥问题吧,并且给开发看过了,开发也没提什么意见。”乖哥又问,“这个404页面乍一看的确没啥大毛病,但是我进入这个页面后,我接下来怎么操作呢?” 阿白思考一下,“404页面就是访问的页面不存在然后给的一个提示,其实也没啥操作了,只能关闭页面吧。”乖哥听了,没做评价,接着问,“刚看这个设计的404原型,旁边并没有什么需求说明,我们网站是程序员垂直社区,你也没有告诉设计师是否要设计与网站社区相匹配的元素。”阿白一听,辩解道“404页面应该不会经常出现吧,我觉得没有设计师的特殊设计也没关系,还可以节省人力。”乖哥听了有点不开心样子,阿白知道自己说错了,因为乖哥一直提倡“以用户为导向”,乖哥一直严格要求每一个页面设计。赶紧解释道“不过从用户体验考虑,我觉得您刚才说的还是挺有道理的。”
乖哥喝了一口手里的水,说,“回到第一个问题,用户进入404页面后怎么办?其实这时候用户是很慌张,甚至带着一些烦躁。进入404首先不是用户的错(哪怕是用户自己输错URL地址)。那么对于此时的用户,我们产品应该怎么做呢?在用户不知所措的情况下,赶紧告诉用户接下来怎么走,’返回首页‘、‘返回上一页’。如果用户认为这就是正确的URL怎么办?比如有一个用户在自己的博客首页查看自己一篇博客,结果显示‘404’,那么这是时候用户不仅非常没有安全感,甚至有点愤怒,这时候,他最想做的大概是‘立刻反馈’。上述这么多,总结亮点,一是不要让用户流失,即提高留存。二是给用户一个提问质疑的快捷渠道,让用户赶紧发泄一下。” 阿白听了,若有所思的点点头。
乖哥接着又说,“再说第二个问题,就像我刚才说的我们的网站是做程序员社区的,这是一个十分垂直的领域,我们用户拥有一些区别于大众用户的特征。我们应该为他们定制更相符的设计。但是你在出原型时,没有告诉设计师这个需要。如果设计师一开始当作普通页面设计,那么最终会因为你前期出原型时考虑的不周到,导致设计师二次反工,这是对团队资源的浪费。”。阿白听了有点惭愧,连忙说“是我没有认真思考的,我这就重新改一版”
阿白根据刚才乖哥提出的建议,有重新改了一版404页面,大概是下面的样子。并且在旁边标注告诉设计师,“404提示UI希望可以展示出程序员相关元素”。
乖哥看了一下新的原型原型,说“好的,现在交付开发吧。”阿白很开心,觉得自己终于完成任务了。
三.咱也不懂,咱也不敢问
下午两点,按照计划,如期开始“需求评审”。阿白介绍自己的设计,开发和设计师根据自己之前的理解提出疑问,阿白一一解答,一切都在阿白的把控之中发展的有条不紊。最后阿白问大家还有没有什么疑问?看大家没人说话,阿白看了一眼乖哥,就准备结束会议。这时乖哥说,“开发同学那边注意一下,如果后面有其他我们这边没考虑到的404页面,一定麻烦提醒一下,不要私下直接跳首页或其他页面,这会影响搜索引擎对网站的信任,认为我们存在很多死链接并直接跳首页,这在搜索引擎里会被认为作弊,对SEO会产生影响。另外对于“200”、“302”这样的提示码请务必不要返回“404”,“404”也不要错误返回成了“200”、“302”,这也会降低搜索引擎对我们的信任。”开发同学点点头,便是赞同。阿白一脸懵逼,心想“咦?这两点是什么意思?为什么乖哥可以和开发小哥聊我听不懂的东西?咱也不懂,咱也不敢问。”阿白只是默默的把这两点记在了需求文档上,会议结束。
四.原来是这样
评审会议结束后,阿白还是不甘心,默默去Google一下,乖哥说那两点是什么意思,一番搜索之后,大概明白了。如果404页面直接跳转到首页,那么给搜索引擎一个信息就是,只要你的网站有死链接,错误链接或者不存在的链接时,返回的结果都是首页,这会被认为是作弊行为,这影响你首页的权重,严重了会降权,如果真的要跳的话,也要等个30S的样子吧。另外就是假如你访问两个不存在的URL —— 链接A、链接B,都显示给用户是404页面,“返回消息”里实际应该都返回“404”,但搜索引擎得到的回应状态码是“200”,那么,便会将其收录到索引数据库(注:“404”页面不会被索引到数据库,“200”、“302”会被索引到数据库),这样的结果便是这两个不同的url具有完全相同的内容:都是自定义404错误页面的内容。这类重复文本(Duplicate Content)的现象对许多搜索引擎而言都是大忌。这样,对搜索引擎而言,特别是Google,大大降低对网站的信任,从而影响SEO。