一个好的网站,拥有一个好的 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. Effective Java Index

    Hi guys, I am happy to tell you that I am moving to the open source world. And Java is the 1st langu ...

  2. Linux文件操作常用命令整理

    收集.整理日常系统管理或维护当中的,常用到的一些关于文件操作的命令或需求,后续会慢慢补充.完善! 查看.生成指定目录的目录树结构?   [root@DB-Server ~]#tree   #当前目录 ...

  3. Sqlite学习笔记(一)&&编译安装

    Sqlite简介 sqlite是一个开源的嵌入式文件数据库,sqlite以动态链接库的方式供应用程序调用,所有的数据库对象都存储在同一个文件中. sqlite动态库非常小,最新的3.8.11版本也只有 ...

  4. 十五天精通WCF——第八天 对“绑定”的最后一点理解

    转眼已经中断10几天没有写博客了,也不是工作太忙,正好碰到了端午节,然后最近看天津台的爱情保卫战入迷了...太好看了,一直都是回味无穷...而且 涂磊老师话说的真是tmd的经典,然后就这样耽搁了,好了 ...

  5. HTML的基本代码第一课

    打开DREAMWEAVER,新建HTML,如下图: 其中body的属性: bgcolor---页面背景颜色 text--文字颜色 topmargin--上页边距 leftmargin--左叶边距 ri ...

  6. SQLHelp帮助类

    public readonly static string connStr = ConfigurationManager.ConnectionStrings["conn"].Con ...

  7. Linux rpmbuild命令

    一.简介 rpmbuild命令用于创建软件的二进制包和源代码包. 二.选项 参考:http://blog.sina.com.cn/s/blog_4ba5b45e0102e5r2.html http:/ ...

  8. jquery——九宫格大转盘抽奖

    一.用到的图片 二.代码如下,重点是js部分 <!DOCTYPE html> <html> <head> <meta http-equiv="Con ...

  9. Spring学习之第一个Spring MVC程序(IDEA开发环境)

    回顾Java平台上Web开发历程来看,从Servlet出现开始,到JSP繁盛一时,然后是Servlet+JSP时代,最后演化为现在Web开发框架盛行的时代.一般接触到一个新的Web框架,都会想问这个框 ...

  10. Jetty使用攻略

    jetty作为一款小型的web容器用处很大,因为其小巧强大,经常作为嵌入式的组件处理http交互. Jetty 作为一个独立的 Servlet 引擎可以独立提供 Web 服务,但是它也可以与其他 We ...