这篇文章分享一个SEO的问题,软404。我们在网站中经常见到的一个状态码就是404。无论我们是否开发一个网站,这都是要面对的一个问题

何谓软404

在说软404之前,我们首先要了解什么是404。404 是一个 HTTP状态码,表示网页未找到。简单来说,当我们访问一个网页的时候,如果我们请求的网址没有对应的资源,则网站就会返回给我们 “404 网页不存在”

关于HTTP不是我们这篇文章的目的,可以查看HTTP教程了解更多HTTP基础知识。下面我们看一个 404的通用页面

默认情况下,如果我们访问了一个不存在的链接,web服务器会返回给我们上面这样一个页面(Nginx)。但是,如果我们是一个网站运营者,我们会发现直接把这种页面返回给用户,肯定会降低我们网站的逼格。

鉴于此,一般我们都会自己定义一个404页面,我自己网站的404页面是下面这样子的。

访问 https://www.jiyik.com/a.html

软404

关于404我们就介绍这么多,下面我们主要说一下软404。刚开始做网站的时候对软404的概念也不了解。最开始只想着自定义404页面来提升用户的体验。 但是有一个问题没有注意到,如果是纯静态的,可以直接通过Ningx或者Apache等web服务配置自己的404页面。这种是没有什么问题的。但是如果是那种动态的页面,我们是需要在代码中判断用户所请求的资源是否存在,如果不存在的话,我们是直接通过模版引擎渲染了一个404页面。 简单看一下代码

if (count($res) <= 0) {
$this->displayError("404");
return;
}

这里我访问一篇不存在的一篇教程内容,会返回一个404页面

那么问题来了,这里返回给了用户一个404页面,但是我们给的HTTP状态码却是 200
。 虽然用户没有什么感觉,但是要做SEO,对于搜索引擎来说,它会认为你这是赤裸裸的欺骗。(其实我是一个SEO小白,我真不是存心要欺骗你的)

上面这种情况也就是我们今天要介绍的主角,软404。所谓软404,就是给用户展现的是一个404的页面,但是实际的HTTP状态码却是200。

所以要解决软404,其实很简单,就是返回给用户一个404页面的同时,把响应的状态码也改成404或者410即可。这个要看你的网站所用的编程语言了。然而不管是什么语言,最核心的还是HTTP协议。

对于PHP来说,其实是比较简单的,可以通过 header 来修改响应状态码

header("status: 404 Not Found");

修改之后,再请求相同地址的时候,在返回了自定义404页面的同时,状态码也变成了404。

总结

开发维护一个网站真心不是容易,如果只是开发出来对于一个程序员来说不是什么难事。但是其中很多的细节是需要我们用心去做的。我个人是一个开发者,对于SEO真心是一个小白,边做边学习边修改吧。 如果不是开发人员,要想做好一个网站,不论是用cms还是其他的框架,都希望能了解一下HTTP协议。现在已经进入了HTTP2.0的时代了。有兴趣也可以了解一下 HTTP2的前世今生 以及 HTTP1.1的不足

推荐阅读:

在SEO过程中,如何避免网站中出现软404的更多相关文章

  1. web中c#纯网站中引用log4net模块,不记录日志

    如题,解决如下: 1.log4net.config配置如下: <?xml version="1.0" encoding="utf-8" ?> < ...

  2. 前端在开发过程中怎么提高网站的seo?

    前端开发过程中怎么提高网站的seo? 到写这篇博客为止,我还没有做过需要做seo的项目,也不知道怎么前后端合作(我才毕业工作一年左右,往后会多去学习这方面知识的),通过一些配置来提高网站的seo性能. ...

  3. [译]MVC网站教程(四):MVC4网站中集成jqGrid表格插件(系列完结)

    目录 1.   介绍 2.   软件环境 3.   在运行示例代码之前(源代码 + 示例登陆帐号) 4.         jqGrid和AJAX 5.         GridSettings 6.  ...

  4. 将w3cplus网站中的文章页面提取并导出为pdf文档

    最近在看一些关于CSS3方面的知识,主要是平时看到网页中有很多用CSS3实现的很炫的效果,所以就打算系统的学习一下.在网上找到很多的文章,但都没有一个好的整理性,比较凌乱.昨天看到w3cplus网站中 ...

  5. 网站中的专题页或者tag聚合页的权重不错

    一.据最近的一些观察,觉得网站中的专题页或者tag聚合页的权重不错,因此多给网站制作一些专题页面,不仅有利于聚合站内的文章,更是绝对的原创内容,应该会受到百度的青睐.简评:关于权重的讨论,这篇无疑是很 ...

  6. 禁用 Windows Azure 网站中的 ARR 实例关联

    编辑人员注释: 本博客文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 在 Windows Azure 网站中设置网站的多个实例是横向扩展网站的绝佳方式,Azur ...

  7. VS2010 Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)

    步骤如下: 1. Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)" title="VS2010 Chart控件(一)Chart控件在ASP.NE ...

  8. MVC设计模式在网站中的应用

    MVC设计模式在网站中的应用 以淘宝的购物车为例 一.结合六个基本质量属性 可修改性 采用MVC设计模式的时候,可以将视图.模型.控制器分析,将用户动作.数据表示.应用数据分离开来,如果用户需要以不同 ...

  9. 通过Web安全工具Burp suite找出网站中的XSS漏洞实战(二)

    一.背景 笔者6月份在慕课网录制视频教程XSS跨站漏洞 加强Web安全,里面需要讲到很多实战案例,在漏洞挖掘案例中分为了手工挖掘.工具挖掘.代码审计三部分内容,手工挖掘篇参考地址为快速找出网站中可能存 ...

随机推荐

  1. 分布式全局ID与分布式事务

    1. 概述 老话说的好:人不可貌相,海水不可斗量.以貌取人是非常不好的,我们要平等的对待每一个人. 言归正传,今天我们来聊一下分布式全局 ID 与分布式事务. 2. 分布式全局ID 2.1 分布式数据 ...

  2. 最详细的Android SDK下载安装及配置教程-------全文均为引用

    <https://www.cnblogs.com/gufengchen/p/11038029.html>

  3. Coursera Deep Learning笔记 序列模型(一)循环序列模型[RNN GRU LSTM]

    参考1 参考2 参考3 1. 为什么选择序列模型 序列模型能够应用在许多领域,例如: 语音识别 音乐发生器 情感分类 DNA序列分析 机器翻译 视频动作识别 命名实体识别 这些序列模型都可以称作使用标 ...

  4. the Agiles Scrum Meeting 7

    会议时间:2020.4.15 21:00 1.每个人的工作 根据项目进度,我们将原先的完善组和debug组合并,成为团队项目增量开发组,原增量组成为个人结对项目增量开发组. 今天已完成的工作 个人结对 ...

  5. [敏捷软工团队博客]项目介绍 & 需求分析 & 发布预测

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 团队项目选择 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 了解项目整体情况 ...

  6. mongodb的简单查询

    此篇文章简单的记录一下mongodb 的简单查询操作. 一.数据准备: db.persons.insertMany([ {'userId':1,name:'张三','age':20,'scores': ...

  7. mbps和MB/s是怎么换算的

    Mbps即"传输速率",也叫"带宽".去营业厅开网线的时候会问开几兆的宽带,这里说的"几兆的宽带"就是指多少Mbps,但是Mbps和MB/s ...

  8. stm32f103中断学习总结

    一.NVIC 介绍 NVIC 英文全称是 Nested Vectored Interrupt Controller,中文意思就是嵌套向量中断控制器,它属于 M3 内核的一个外设,控制着芯片的中断相关功 ...

  9. FPGA基础之锁存器与触发器的设计

    转载:https://blog.csdn.net/lg2lh/article/details/39081061 一.锁存器 首先设计锁存器的时候应该清楚什么是锁存器,锁存器其实是对电平信号敏感的,一定 ...

  10. vs2015 MSB600 "inf2cat.ext"已退出,代码为2

    使用vs2015编译XDMA驱动过程中,报如下错误: vs2015 MSB600 "inf2cat.ext"已退出,代码为2 在使用Qt编译PCIE码表的过程中,出现C1038:无 ...