一个好的网站,拥有一个好的 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 文件:

echo.>.config

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

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

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),修改如下:

<VirtualHost *:80>
    DocumentRoot "c:\wamp\www"
    ServerName localhost
    ErrorDocument 404 /404.htm
</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. Asp.net MVC Razor模板引擎技巧分享

    Razor是Asp.net MVC中新的默认模板类型, 语法简单易用.这篇文章不涉及Razor的语法,主要介绍Razor的一些在MVC项目中的使用技巧,以及脱离MVC环境下,如何使用Razor. 阅读 ...

  2. Git中文版教程

    1. 起步 1.1 关于版本控制 1.2 Git 简史 1.3 Git 基础 1.4 命令行 1.5 安装 Git 1.6 初次运行 Git 前的配置 1.7 获取帮助 1.8 总结 2. Git 基 ...

  3. android中的万能适配器BaseAdapter的总结

    有时候,列表不光会用来做显示用,我们同样可以在在上面添加按钮.添加按钮首先要写一个有按钮的xml文件,然后自然会想到用上面的方法定义一个适配器,然后将数据映射到布局文件上.但是事实并非这样,因为按钮是 ...

  4. column 'id' in field list is ambiguous

    column 'id' in field list is ambiguous  这个错误,是因为你查询语句里面有id字段的时候,没有说明是哪个表的id字段,应该加上表名(或者别名)来区分.

  5. SharePoint Content Database简介

    SharePoint作为微软主打的企业Portal平台,功能强大,使用简单,非常的方便.对于很多关系数据,我们可以使用自定义列表来维护,如果是非关系数据,可以使用文档库来维护.另外还可以在上面进行版本 ...

  6. EF Power Tools的Reverse Engineer Code First逆向生成Model时处理计算字段

    VS2013上使用EF Power Tools的Reverse Engineer Code First逆向生成Model时,没有处理计算字段.在保存实体时会出现错误. 可以通过修改Mapping.tt ...

  7. android Eclipse执行项目提示错误: unable to execute dex: GC orerhead limit exceeded

    Eclipse执行项目提示错误: unable to execute dex: GC orerhead limit exceeded 解决方法: 找到Eclipse安装目录的文件,\eclipse\e ...

  8. Android 中PopupWindow使用 (转)

    参考学习后遇到问题: 要引用:有好几个,可以用错误提示解决: import android.widget.PopupWindow; import android.widget.Toast; Activ ...

  9. Java里面的转义字符

    转义字符是指,用一些普通字符的组合来代替一些特殊字符,由于其组合改变了原来字符表示的含义,因此称为“转义”. 常见的转义字符: \n 回车(\u000a) \t 水平制表符(\u0009) \b 空格 ...

  10. 三:shell运算符

    1:declare命令 shell默认是字符串型        如果需要加减乘除,需要定义为整型declare命令:改变默认变量的类型decalre [+/-] [选项]  变量名      -给变量 ...