一个好的网站,拥有一个好的 404页面 是标配。

为何要有 404页面?如何设置一个 404页面?

why 404 pages?

在本地,比如我打开 localhost/fuck.htm(该文件不存在),HTTP 返回 404 Not Found,同时页面展示如下:

用户体验很差有木有!更重要的是,如果没有 404页面,会影响 SEO。

为什么说会影响 SEO 呢?

当你的网站有些页面地址(路径)改变了。或者内容被删除了,导致原地址访问本页面时,提示页面不存在。比如说你网站改版,也会导致很多原来存在的页面,访问的时候提示页面被删除或不存在。这个时候就会产生很多死链接,当一个网站死链接过多的时候,对搜索引擎是非常不友好的,影响你的网站整体权重,也对用户体验很不好。

这时候就需要一个 404 页面。这个页面是所有死链接的着陆页,所有打不开的页面都会跳转到这个 404 页面。这个页面包含了你的主要的网站栏目导航。用户在这个页面可以很方便的选择继续浏览你网站别的内容。404 页面设置好以后,通过站长工具状态码检,会返回 404 状态码。如果返回状态码是 200 说明是设置错误(这样结果会造成搜索引擎有可能认为你网站有大量的重复内容,从而网站权重被降),虽然对访问的用户而言,HTTP 状态码究竟是 "404" 还是 "200" 并没有什么区别,但对于搜索引擎则是相当重要的。

404 说白了就是在当前页面上做一个返回首页或者其他页面的一个链接,这个链接一方面告诉搜索引擎我们这个页面已经无效了请 "蜘蛛" 再去爬一次首页吧!这样当蜘蛛爬到死链接(404页面)那里的时候就会自动跑到首页并进行索引,也就是说 404 的出现不仅仅让搜索引擎的数据库更快的删除掉这些死链接,还能让蜘蛛更加勤快的认识新网站,可以说是一举两得。

set 404 pages

笔者总结了两种在 APACHE 中设置 404页面的方法。当然首先你得写好一个 404页面,毕竟本质上这也是个 html 页面,内容就可以集思广益了,比方说可以写个小游戏啊,展示网站其他内容,或者说 404公益,等等。这里我写了个文件把它命名为 404.htm,放在本地服务器的根目录下(localhost/404.htm)。

方法一 —— .htaccess 设置:

第一种方法是在 .htaccess 文件中进行相关设置。

什么是 htaccess?概述来说,htaccess 文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置。通过 htaccess 文件,可以帮我们实现:网页 301 重定向、自定义 404 错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

关于 htaccess 文件的更多内容可以参考文末链接或者自行谷歌百度。

这文件是不是很奇怪,木有文件名,其实也不奇怪,用过 Git 的话你也肯定见过 .git 文件夹。但是本地服务器下没有该文件啊?在 windows 下从别的文件强制改名转换的话,会提示 "必须键入文件名",so 我们可以用命令行。

打开 cmd,cd 到指定目录后,用如下命令便可创建一个 .htaccess 文件:

  1. echo.>.config

前面说了,htaccess 文件负责相关目录下的网页配置,所以服务器下的任何文件夹都可以有一个自己的 htaccess 文件。这里我们把它放在根目录下。

打开该文件,将以下内容复制进去:

  1. ErrorDocument 404 /404.htm

这时再打开 localhost/fuck.htm,页面内容便会变成 404.htm 的内容,返回 404 状态码,URL 却不会变化。

(PS:如此这般我本地便已经生效,但是有些文章指出还需要在 conf 文件下做一些修改,如果没有生效,可以参考下 这里)

这里有几点需要注意:

  • 一是不能把以上 ErrorDocument 404 /404.htm 中的斜杠漏掉,if so 404 页面会显示字符串 "404.htm"
  • 其二是路径不能用绝对地址,比如说用 “http://localhost/404.htm”,这样页面打开无效的链接后,会跳至 “http://localhost/404.htm” 的地址(改变 URL),返回状态码 200,这不仅影响站长工具的检查结果,而且影响 SEO 的收录
  • 其三是不要把 404 错误直接转到网站首页,这将影响网站的收录。有些人可能会有疑惑,搞什么 404页面,404 的时候直接转到网站根文件不是更好,还能给首页导量,naive 啊,搜索引擎也不是吃素的,它会认为你这是 "欺骗",从而就不待见你了。
  • 如果 IE 还是跳不过去,那肯定是你的 404 页面内容太少了,至少需要 512 b(字节) 才能让 ie "臣服",认为你的 404 页面还是有诚意的

方法二 —— vhosts 设置:

假设你跟楼主一样设置过 vhosts。(如果没有,欢迎参考 WampServer下如何实现多域名配置

接下去就很简单了,打开 vhosts 文件(比如我的路径 \wamp\bin\apache\Apache2.2.21\conf\extra\httpd-vhosts.conf),修改如下:

  1. <VirtualHost *:80>
  2. DocumentRoot "c:\wamp\www"
  3. ServerName localhost
  4. ErrorDocument 404 /404.htm
  5. </VirtualHost>

要注意的点同 htaccess 设置要注意的一致。

总结

404 页面是一个成熟的网站必须要有的东西,主要有两个作用,利于用户体验以及 SEO。在 apache 中有两种设置方式,htaccess 和 vhosts,某些文章指出尽量使用后者,前者比较耗费资源。设置中要注意的点请参考第二小节。

Read More:

如何在 Apache 中为你的网站设置404页面的更多相关文章

  1. 网站设置404页面 --nginx

    有的时候根据域名要先知道用的什么web 服务器 最简单的 http://tool.chinaz.com/pagestatus/  输入域名,看返回的头部信息 用的那个web浏览器 下面的方法也是根据头 ...

  2. 如何在 apache 中设置缓存有效时间

    今天学习了下如何在 apache 中设置缓存时间,记之以备忘. 在 http 报文头中,与缓存时间有关的两个字段是 Expires 以及 Cache-Control 中的 max-age,Expire ...

  3. 如何在linux中批量建立用户并设置随机密码

    Ubuntu是基于linux的免费开源操作系统,同时也是真正意义上的“多任务多用户”操作系统,既然是多用户系统,自然就涉及到创建多个用户的问题.同时由于Ubuntu系统中的root用户具有最高权限,无 ...

  4. windows 2008 中IIS7.0以上如何设置404错误页面

    404错误页面的设置,不仅仅可以提高用户体验度,从SEO方面考虑,也是非常重要的.今天,笔者在这里介绍一下在windows 2008下如何设置404错误页面. 注意:设置404有我这里介绍2种方式,推 ...

  5. 【转】win2008 中iis7设置404页面但返回状态200的问题解决办法

    今天根据SEO反馈,某个站点中设置的404页面返回的http状态为200.通过站长工具进行查询,发现返回的状态确实为200. 通过彻查问题,发现这个网站的服务器环境为windows2008 服务器为i ...

  6. apache 设置404页面

    这几天用xampp搭建了一套环境,后来发现在网页访问出现404的时候xampp显示的内容不安全,把apache.php还有一些其它的版本都会显示 出来,所以想自己设置一个404的页面,在网上找了一些资 ...

  7. 通过修改 Apache 的配置文件 htaccess 文件实现自定义404页面

    最近在学习使用Apache服务器的配置,做一个记录. Apache下有个.htaccess文件,是Apache的一个特殊的配置文件.这个配置文件默认是没有的,要手动在各自的项目的根目录编写才行. 要实 ...

  8. Apache设置404页面

    使用版本:Apache 2.2 1.添加404页面 在所配置网站的根目录添加编辑好的 404.html (页面名字无所谓 比如也可以叫missing.html) 如C:\Program Files\A ...

  9. thinkphp3.2中开启静态缓存后对404页面的处理方法

    静态缓存很实用但是有时有些不需要静态缓存,如404页面,第一次访问返回404页面并缓存,第二次换回的状态就是200,属于正常访问,虽然人眼可以看出是404页面,但是搜索引擎不会的,而是把这个页面当成正 ...

随机推荐

  1. DROP_SNAPSHOT_RANGE过程不能清理表RM$_SNAPSHOT_DETAILS

    今天在测试.验证DROP_SNAPSHOT_RANGE不能彻底快照的过程中遇到了DROP_SNAPSHOT_RANGE无法清理WRM$_SNAPSHOT_DETAILS表中数据的情况,测试服务器版本为 ...

  2. What every programmer should know about memory 笔记

    What every programmer should know about memory, Part 1(笔记) 每个程序员都应该了解的内存知识[第一部分] 2.商用硬件现状      现在硬件的 ...

  3. Java代码获取NTP服务器时间

    apache的commons-net包下面有ntp相关的实现类,主要类有: 1  org.apache.commons.net.ntp.NTPUDPClient ? 1  org.apache.com ...

  4. my_strlen()

    int my_strlen(const char* S){ int i=0; while('\0'!=*(S+i)){ i++; } return i; }

  5. [转]net中哈希表的使用 Hashtable

    本文转自:http://www.cnblogs.com/gsk99/archive/2011/08/28/2155988.html 以下是PetShop中DBHelper中的使用过程: //创建哈希表 ...

  6. 为opencv贡献代码

    本文记录本人从发现bug,提交bug,到修复bug的过程.下面enjoy: 1.发现bug 由于项目需要,开发了一个视频检测demo,类似于扫一扫二维码的程序,不过不是这个程序不是扫二维码.具体实现参 ...

  7. luogu1097统计数字[noip2007提高组Day1T1]

    题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出 ...

  8. ajax之jsonp跨域请求

    前端ajax请求代码 后台php处理代码

  9. centos安装docker

    一.升级内核 [root@iZ2893wjzgyZ ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org [root@iZ289 ...

  10. IntelliJ IDEA运行tomcat项目编码错误, 及如何指定tomcat编码

    刚开始用IDEA, 在跑dubbo开发时, 发现一个很奇怪的问题, 远程调用服务端的方法时, 传入的中文参数会变成GBK编码. 经过好长时间的跟踪终于把问题定位到了IDEA里配置的Tomcat. 凡是 ...