在windows2003系统里的administrator账号禁用后的解决方法

windows2003里!administrator账号禁用了,如何启用此账户呢,就只有这一个用户的,其实方法很简单的,我们可能通过重新启动服务器,按下F8键,在出现的dos菜单时,我们选择进入到安全模式下,用原来的用户名和密码登陆(在安全模式下被禁用的账户可以照常登陆的)。我们进去后,把账户重新启用即可。

LINUX下加载U盘的方法

    首先,进入 ROOT 方式(指当前用户采用非root用户登陆时):
    敲击命令 su root
    成功后
    显示 PASSWORD:  这时应该键入 用户 root 的登陆密码.
   
    第二步,确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令:
            md /mnt/usb
            成功后进行下一步。
   
    第三步, 载入 u 盘,需键入以下命令:
             mount /dev/sda1 /mnt/usb
             成功后,即可使用 u 盘了
             u 盘里的文件 就在目录 /mnt/usb 下。
   
    第四步,卸载u盘
            在使用完u盘后,在拔出前需要先键入卸载U盘命令
            命令如下:
            umount /mnt/usb

IIS5.0 IIS5.1 IIS6.0 IIS安装包 系列下载

IIS5.1 windows xp用

我感觉大家用到IIS安装包也都在网吧吧, 网吧一般都是xp吧,所以说IIS5.1才是最实用的  下载地址1 http://www.softhy.net/softhy.net_down/softhy.net_iis51.rar
下载地址2 http://zycode.com/code/server/1804.html

IIS5.0 windows 2000用

下载地址1 http://cq.down.chinaz.com/soft11/iis5.rar
下载地址2 http://sc.down.cnzzz.com/vvdcnzzz/soft11/iis5.rar
下载地址3http://down21.codefans.com/server/IIS5.rar
下载地址4http://down21.codes.com.cn/server/IIS5.rar

IIS6.0 windows 2003用

下载地址1http://www.zycode.com/code/server/1487.html
下载地址2http://ftpa.xiaoshen.cn:2121/2005/09/IIS6.0.rar

adodb教程:产生 Update 及 Insert 的SQL指令

ADODB 1.31版起,新增了两个资料集函数:GetUpdateSQL()及GetInsertSQL()。这允许你在执行了像”Select * FROM table query Where…”这样的查询函数後,建立一个 $rs->fields复本,改变这些栏位,然後自动产生出更新或是新增的SQL指令。

以下我们展示如何运用这些函数,我们将存取一个资料表,带有下列栏位:(ID,FirstName,LastName,Created)。在这些函数被执行前,你需要藉由一个对资料表的查询指令(select)来初始化一个资料集。

<?
#==============================================
#  GetUpdateSQL() 及 GetInsertSQL() 范例码
#==============================================
include(‘ADOdb.inc.php’);
include(‘tohtml.inc.php’);

#==========================
# 以下的程式代码为测试新增状态

$conn = &ADONewConnection(“mysql”);  # 建立一个连结
$conn->debug=1;
$conn->PConnect(“localhost”, “admin”, “”, “test”); # 连结到 MySQL, 资料库名称为 test


$sql = “Select * FROM ADOXYZ Where id = -1”; 
# 从资料库中查询出一个空的资料集
$rs = $conn->Execute($sql); # 执行查询,并取得一个空的资料集 初始化记录集,以便下面保存,

$record = array(); # 初始化一个阵列,以便存放记录资料供新增用

# 设定记录中的栏位值
$record[“firstname”] = “Bob”;
$record[“lastname”] = “Smith”;
$record[“created”] = time();

# 传入空的资料集及栏位资料阵列到GetInsertSQL函数中,以执行功能
# 这个函数将会依传入的资料,回传一个全格式的 Insert SQL指令

$insertSQL = $conn->GetInsertSQL($rs, $record);

$conn->Execute($insertSQL); # 将记录挿入资料库中

#==========================
# 以下的程式码测试更新状态

$sql = “Select * FROM ADOXYZ Where id = 1”; 
# 选择一笔记录以便更新

$rs = $conn->Execute($sql); # 执行这个查询,并取得一个存在的记录来更新

$record = array(); # 初始化一个阵列,以存放要更新的资料

# 设定栏位里的值
$record[“firstname”] = “Caroline”;
$record[“lastname”] = “Smith”; # 更新 Caroline的姓由 Miranda 变成 Smith

# 传入这个只有单一记录的资料集以及含有资料的阵列到 GetUpdateSQL函数里
# 函数将会回传一个具有正确 Where 条件的 Update(更新) SQL 指令

$updateSQL = $conn->GetUpdateSQL($rs, $record);

$conn->Execute($updateSQL); # 更新资料库中的记录
$conn->Close();
?>

mysql中DATETIME、DATE 和 TIMESTAMP 类型数据使用

DATETIMEDATETIMESTAMP 类型是相似的。这个章节描述了它们的特性以及它们的相似点与不同点。

DATETIME 类型可用于需要同时包含日期和时间信息的值。MySQL 以 'YYYY-MM-DD HH:MM:SS' 格式检索与显示 DATETIME 类型。支持的范围是 '1000-01-01 00:00:00''9999-12-31 23:59:59'。(“支持”的含义是,尽管更早的值可能工作,但不能保证他们均可以。)

DATE 类型可用于需要一个日期值而不需要时间部分时。MySQL 以 'YYYY-MM-DD' 格式检索与显示 DATE 值。支持的范围是 '1000-01-01''9999-12-31'

TIMESTAMP 列类型提供了一种类型,通过它你可以以当前操作的日期和时间自动地标记 InsertUpdate 操作。如果一张表中有多个 TIMESTAMP 列,只有第一个被自动更新。

自动更新第一个 TIMESTAMP 列在下列任何条件下发生:

  • 列值没有明确地在一个 InsertLOAD DATA INFILE 语句中被指定。
  • 列值没有明确地在一个 Update 语句中被指定,并且其它的一些列值已发生改变。(注意,当一个 Update 设置一个列值为它原有值时,这将不会引起 TIMESTAMP 列的更新,因为,如果你设置一个列值为它当前值时,MySQL 为了效率为忽略更新。)
  • 明确地以 NULL 设置 TIMESTAMP 列。

第一个列以外其它 TIMESTAMP 列,可以设置到当前的日期和时间,只要将该列赋值 NULLNOW()

任何 TIMESTAMP 列均可以被设置一个不同于当前操作日期与时间的值,这通过为该列明确指定一个你所期望的值来实现。这也适用于第一个 TIMESTAMP 列。这个选择性是很有用的,举例来说,当你希望 TIMESTAMP 列保存该记录行被新添加时的当前的日期和时间,但该值不再发生改变,无论以后是否对该记录行进行过更新:

  • 当该记录行被建立时,让 MySQL 设置该列值。这将初始化该列为当前日期和时间。
  • 以后当你对该记录行的其它列执行更新时,为 TIMESTAMP 列值明确地指定为它原来的值。

另一方面,你可能发现更容易的方法,使用 DATETIME 列,当新建记录行时以 NOW() 初始化该列,以后在对该记录行进行更新时不再处理它。

示例(译者注):

mysql> Create TABLE `tA` (
->   `id` int(3) unsigned NOT NULL auto_increment,
->     `date1` timestamp(14) NOT NULL,
->     `date2` timestamp(14) NOT NULL,
->     PRIMARY KEY  (`id`)
-> ) TYPE=MyISAM;
Query OK, 0 rows affected (0.01 sec)
mysql> Insert INTO `tA` SET `id` = 1;
Query OK, 1 row affected (0.02 sec)
# 没有明确地指定第一个 timestamp 列值,该列值被设为插入的当前时刻
# 没有明确地指定其它的 timestamp 列值,MySQL 则认为插入的是一个非法值,而该列值被设为0
mysql> Insert INTO `tA` S (2, NOW(), NULL);
Query OK, 1 row affected (0.01 sec)
mysql> Select * FROM `tA`;
+----+----------------+----------------+
| id | date1          | date2          |
+----+----------------+----------------+
|  1 | 20030503104118 | 00000000000000 |
|  2 | 20030503104254 | 20030503104254 |
+----+----------------+----------------+
2 rows in set (0.00 sec)
mysql> Update `tA` SET `id` = 3 Where `id` = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
# 对某一记录行进行了更新,第一个 timestamp 列值也将被更新
mysql> Update `tA` SET `id` = 2 Where `id` = 2;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0
# MySQL 忽略了这次操作,第一个 timestamp 列值不会被更新
mysql> Select * FROM `tA`;
+----+----------------+----------------+
| id | date1          | date2          |
+----+----------------+----------------+
|  3 | 20030503104538 | 00000000000000 |
|  2 | 20030503104254 | 20030503104254 |
+----+----------------+----------------+
2 rows in set (0.00 sec)
mysql> Update `tA` SET `id` = 1,`date1`=`date1` Where `id` = 3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
# 明确地指定了第一个 timestamp 列值为它原有值,该值将不会被更新
mysql> Select * FROM `tA`;
+----+----------------+----------------+
| id | date1          | date2          |
+----+----------------+----------------+
|  1 | 20030503104538 | 00000000000000 |
|  2 | 20030503104254 | 20030503104254 |
+----+----------------+----------------+
2 rows in set (0.00 sec)
* 以上结果在 MySQL 4.0.12 中测试

网页重定向检查工具

因为不当地设置网页重定向而影响网站优化效果的例子比比皆是,某些情况下,错误的网页重定向甚至会导致搜索引擎的惩罚。一般说来,当网站建设中需要重定向网页时,应使用301 永久重定向而不是302临时重定向或Meta Refresh方式。

本工具通过检查Web服务器对给定网址请求返回的HTTP headers状态,来分析网页重定向设置的正确与否。如果返回的HTTP header 中包含合法的HTTP 301 状态码,说明该地址已经被正确地设置永久重定向,否则,您需要检查相应的设置并重新设定。

 

  Search Engine Friendly Redirect Checker Tool © SEO Chat™

URL
Valid URL to check

Enter Captcha To Continue
To prevent spamming, please enter in the numbers and letters in the box below

Report Problem with Tool.

   

浪潮之巅第二章 — 蓝色巨人(IBM)(三)

3.错过全球信息化的大潮

      如果要把计算机工业的历史划分阶段的话,那么,1976 年可以作为一个分水岭。这一年,没有读完大学的天才史蒂夫·乔布斯 (Steve Jobs)在车库里整出了世界上第一台可以商业化的个人电脑 Apple-I。在硅谷很多公司才创业时因为资金有限,常常租用租金便宜的民房甚至是它们的车库来办公,这几乎是硅谷特有的现象,苹果起家时也不例外。 "蓝色巨人"在这次信息革命浪潮中步子开始并不慢。1973 年从小华生接手 IBM 的新总裁凯利(Frank Cary)在花了大量时间去应付美国司法部提出的反垄断诉讼的同时,密切注视着新技术的发展。对于个人电脑,IBM 观望了几年。这对 IBM 这样一个大公司来讲是非常有必要的。我们前面讲过,IBM 成功的秘诀是保守,它基本上是不见兔子不撒鹰。如果苹果公司失败了, IBM 不需要做任何事情。如果前者成功了,IBM 依靠它强大的技术储备完全可以后发制人。我们在前面已经提到,IBM 其 实时第二家做计算机的公司。我们以后还会看到很多大公司用这种办法对付小公司的例子。四年后,凯利决定开发个人电脑。

      也许是不想惹人注意,也许是没有太重视这件事,IBM 没有让它力量最强的华生实验室(T.J Watson Labs) 来做这件事,而是将它交给了 IBM 在弗罗里达的一个十几人的小组。为了最快地研制出一台 PC ,这个只有十几人的小组不得不打破以前自己开发计算机全部软硬件的习惯,采用了英特尔公司 8088 芯片作为该电脑的处理器,同时委托独立软件公司为它配置各种软件。这样,仅一年时间,IBM-PC 就问世了。虽然第一批 IBM-PC 的性能只有现在个人电脑的万分之一,但是,它比苹果公司的 Apple 系列已经好很多了,而且对当时的字处理,编程等应用已经足够了。因此,它很受欢迎, 当年就卖掉 10 万台,占领了四分之三的微机市场。IBM 在和苹果的竞争中真可谓是后发先至。直到今天, IBM PC 还是个人电脑的代名词。

      如果当时问大家以后谁会是个人电脑时代的领导者,十有八九的人会回答 IBM。事实上,当时《时代周刊》就评选 IBM PC 为二十世纪最伟大的产品。《华尔街日报》也高度评价了 IBM 的这一贡献。但是,现在我们知道,个人电脑时代的最终领导者是微软和英特尔,而不是 IBM。随着 2005 年 IBM 将个人电脑部门卖给了中国的联想公司,IBM 彻底退出了个人电脑的舞台。

      是什么原因造成了 IBM 的这个结果呢?虽然原因很多,但最主要的有三个:IBM 的基因,反垄断的后遗症以及微软的崛起。

      先谈谈 IBM 的基因。IBM 无论是在老华生执掌的机械时代,还是在小华生接管的电子时代,它的客户群基本上是政府部门、军方、银行、大企业和科研院校,它从来没有过经营终端消费型产品 (consumer products)的经验,也看不上这类产品。以往,IBM 卖计算机的方式是和大客户签大合同。八十年代的计算机,除非是专业人员,没有人玩得转。因此, IBM 从来将计算机和服务绑在一起卖,至今也是如此。IBM 一旦签下一个大型机销售的合同,不但可以直接进帐上百万美元,而且每年还可以收销售价 10% 左右的服务费。等客户需要更新计算机时,十有八九还得向 IBM 购买。这样,它每谈下一个合同,就可以坐地收钱了。因此,虽然I BM PC 在外面的反应很好,在公司内部反应却冷淡。 IBM PC 第一年的营业额大约是两亿美元,只相当于 IBM 当时营业额的 1% 左右,而利润还不如谈下一个大合同。要知道,卖掉十万台 PC 可比谈一个大型机合同费劲儿多了。因此,IBM 不可能把 PC 事业上升到公司的战略高度来考虑。

      1982 年,IBM 和美国司法部在反垄断官司中达成和解。和解的一个条件是,IBM 得允许竞争对手的发展。如果不是 PC机 的出现,这个条件对 IBM 没有什么实质作用,因为过去一个公司要向开发计算机,必须是硬件、软件和服务一起做,这个门槛是很高的。但是,有了 PC 以后,情况就不同了。因为 IBM PC 的主要部件,如处理器芯片、磁盘驱动器、显示器和键盘等等,或者本身是第三家公司提供的、或者很容易制造,而它的操作系统 DOS 又是微软的。因此,IBM PC 很容易仿制。IBM PC 唯一一个操作系统的内核 BIOS 是自己的,但是很容易地就被破解了。在短短地几年间, IBM PC 的兼容机入雨后春笋般地冒了出来。如果不是反垄断的限制,IBM 可以阻止这些公司使用自己的技术进入市场,或者直接收购其中的佼佼者。但是,有了反垄断的限制后,它对此也只能睁一只眼,闭一只眼。一方面,自己不愿意下功夫做 PC,另一方面无法阻止别人做 PC,IBM 只好看着康柏 (Compaq),戴尔(Dell)等公司作大了。

      第三个原因也不能忽视,如果说在过去的三十年里,IBM 是独孤求败,笑傲江湖,现在它真正的对手比尔· 盖茨出生了。我总是对人讲,盖茨是我们这个时代的拿破仑。在我们生活的这个和平年代,不可能出现汗尼拔和凯撒那样的攻城掠池的军事统帅,但是会在商业这个没有硝烟的战场上出现纵横捭阖的巨人,而比尔·盖茨就是科技界的第一人。

      当时 IBM 为了以最快速度推出 PC,连操作系统都懒得自己开发,而是向其他公司招标。 IBM 先找到了 DR 公司(Digital Research),因为价钱没谈好,只好作罢。盖茨看到了机会,他空手套白狼,用七万五千美元买来的磁盘操作系统 (DOS),转手卖给了 IBM。 盖茨的聪明之处在于,他没有让 IBM 买断 DOS,而是从每台 IBM PC 中收一笔不太起眼的版权费。而且, IBM 和微软签的协议有个很小的漏洞,没有说清楚微软是否可以将 DOS 再卖给别人。盖茨后来抓住了这个空子,将 DOS 到处卖,IBM 很不高兴,告了微软好几次。因为在大家看来这是以大欺小,IBM 得不到别人的同情,从来没有赢过。(在美国,以大欺小的官司常常很难赢,而且即使赢了,也不可能得到太多的赔偿,因为小公司没有什么油水可榨)。 IBM 原来认为 PC 机赚钱的部分是几千块钱的硬件,而不是几十块钱的软件,后来发现满不是这么回事。由于兼容机的出现,IBM 沦为了众多 PC 制造商之一,利润受到竞争的限制。而所有微机的操作系统只有一种,虽然每份操作系统现在还挣不了多少钱,将来的前途不可限量。显然,微软已经占据了有利的位置。因此,IBM 决定和微软共同开发微机的新的操作系统 OS/2,共同来开发微机的软件市场。如果是别人,也许就乐于当 IBM 的一个合作伙伴了。但是,盖茨可不是一般的人,他的心志非常高远,他不会允许别人动微机软件这块大蛋糕,虽然此时的微软的规模远没法和 IBM 相比。盖茨明修栈道,暗渡陈仓,一方面和 IBM 合作开发 OS/2 ,挣了一点短期的钱,另一方面下大力气开发视窗操作系统(Windows)。当视窗 3.1 研制出来的时候,微软帝国也就形成了。十几年后,硅谷一位最成功的 CEO 讲,凡是和微软合作的公司,最后都没有好结果。IBM 也许是其中第一个吃亏者。

 &n
bsp;    应该讲,虽然 IBM 最先研制出今天通用的个人电脑,但是在从八十年代开始的信息革命中,IBM 不情愿地成为了落伍者。同时,一个新的霸主微软横空出世。到八十年代末,由于微机性能每十八个月就翻一番,微机慢慢开始胜任以前一些必须要大型机才能做的工作。这样,微机开始危及到大型机的市场。 IBM 出现了严重的亏损,有史以来第一次开始大规模裁员。这段时期,是 IBM 历史上最艰难的时期。当时有人猜测 IBM 是否会倒闭。

网站链接分析器

  本工具可以分析给定网站/网页上的Outbound链接,以及该链接所使用的Anchor Text,对于图形方式的链接,其Anchor Text为该图片的alt属性。

  所谓的Outbound链接即是指向其他网页的链接,在大部分情况下,近似于通常意义上的超链接。

  Anchor Text的更多解释可参见Anchor Text的重要性分析。

  提示:分析中文网站时如果结果页面显示乱码,将浏览器的编码格式改为简体中文即可。

  Site Link Analyzer Tool © SEO Chat™

URL
Valid URL

Type of links to return:
External (links going to outside web-sites)
Internal (links inside the current web-site)
Both types

Additional Info
Show nofollow links?

Enter Captcha To Continue
To prevent spamming, please enter in the numbers and letters in the box below

Report Problem with Tool.

   

301 Redirect 永久重定向的实现

     在我们的网站建设中,时常会遇到需要网页重定向的情况:象网站调整,如改变网页目录结构,网页被移到一个新地址,再或者,网页扩展名改变,如因应用需要把.php改成.Html或.shtml,在这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户还会得到一个404页面错误信息,访问流量白白丧失;再如某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点,等等。

  常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh:

  • 301 redirect: 301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。
  • 302 redirect: 302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,象Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。
  • meta fresh: 这在2000年前比较流行,不过现在已很少见。其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之內),会被判断为spam。

  这里我们主要谈谈如何通过301 Redirect实现网页重定向

IIS服务器实现301重定向

* 打开internet信息服务管理器,在欲重定向的网页或目录上按右键,见下图
* 选中“重定向到URL”
* 在对话框中输入目标页面的地址
* 切记,记得选中“资源的永久重定向”
* 当然,最后要点击“应用”

在IIS下配置301永久重定向

Apache服务器实现301重定向

  相比较来说,Apache实现起来要比IIS简单多了。在Apache中,有个很重要的文件.htaccess,通过对它的设置,可以实现很多强大的功能,301重定向只是其中之一。

Redirect permanent / http://seo.highdiy.com/ ;将目录下内容重定向到http://seo.highdiy.com/
redirect permanent /old.html http://seo.highdiy.com/new-url/ ;将网页old.html内容重定向到http://seo.highdiy.com/new-url/

  通过合理地配置重定向参数中的正则表达式,可以实现更复杂的匹配。有兴趣的朋友可参考Apache手册。

  其他方法还有:

PHP下的301重定向

<? Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://seo.highdiy.com" );?>

ASP下的301重定向

<%@ Language=VBScript %>
<% Response.Status=”301 Moved Permanently” Response.AddHeader “Location”, ” http://seo.highdiy.com”>

ASP .NET下的301重定向

<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,”http://seo.highdiy.com”);
}
</script>

  配置完成后,要认真检查一下是否正确。Internet有很多类似的Server Header检查工具,如Check Server Headers Tool – HTTP Status Codes Checker或本站提供的这个网页重定向检查工具。

自定义404页面返回不当状态码

HTTP 404 错误意味着链接指向的网页不存在。在网站建设中想要完全避免这种情况是不可能的,比如说,我们常常需要对网站进行调整、改版,便会有网页被删除、改名或移动位置,这时候,虽然相应内容的网页还存在于网站中,但使用原来的地址访问则无法访问。——当然,对这类情况首先要考虑的是为原来页面地址做301重定向,以尽可能地减小对SEO效果的影响。——其次,在别人建立指向网站的链接时,也可能会由于出现拼写错误而使其成为一个无效的链接:在网站内找不到相应的内容页面。

简单说来,这类无效链接是由web服务器自动处理的:当Web 服务器接到类似的数据请求量,会返回一个 404 状态码,告诉对方其要请求的资源并不存在。但是,Web服务器默认的404错误页面,无论Apache还是IIS,均十分简陋、呆板且对用户不友好,无法给予用户寻找相应信息的更多线索,用户看到这类页面往往最直接的反应并是关闭浏览器窗口离开,这在很大程度上给网站造成损失。毕竟,对网站来说,用户永远是最重要的资源,以这种方式损失用户更意味着某种程度的失败。

这也是许多网站使用自定义404 错误页面的原因。通过良好的自定义404页面,可以包含对网站的相应介绍、用户可能感兴趣的内容链接或者网站内容导航链接、内容搜索功能等,能够有效地帮助访问者找到其欲寻找的内容或相似的内容,提高用户在网站内浏览更多信息的机会。

自定义404错误页面返回“200”或“302”状态码

从严格的技术角度,网站对404错误的处理策略,并不是一个SEO方面的工作,而属于网站可用性(usability)方面的问题。——当然,如果从广义的SEO范畴来看,提高网站可用性也属于SEO的基本操作。——但是,如果自定义404错误页面设置不当,则会极大地影响网站的SEO效果。

在许多朋友的印象中,自定义404错误页面只要能正确显示,只要能输入网站内某个并不存在的网页地址,在浏览器中能看到自定义的错误信息,便说明设置没问题。惭愧地说,本人也是抱有这种想法的一员,IT技术点评运行将近一年了,近日因Google更新后排名下降检查网站时才发现存在类似的错误:一个正确设置的404页面,不仅应当正确地显示,同时,应该能够正确返回“404”错误代码,而不是“200”或“302”。虽然对访问的用户而言,HTTP状态码究竟是“404”还是“200”来说并没有什么区别,但对搜索引擎而言,这则是相当重要的。

为什么这么说呢?让我们先来回顾一下搜索引擎收录与索引网页的过程:搜索引擎的Spider向网站服务器发送请求,要求读取某个网页,网站服务器接到请求后返回 HTTP 状态码响应请求,这些返回的HTTP状态码决定着搜索引擎的下一步行动:将该网页收录到索引数据库或者将其从索引数据库删除等。

当然,HTTP状态码有很多种,分别对应不同的情况,下面就与本文内容相关的几种作一简单介绍,更详细的信息可参考W3C规范:

  • 404 : 请求的网页不存在(不排除日后该链接有效的可能性);
  • 410 : 请求的网页不存在(永久);
  • 200 : 服务器成功返回网页
  • 302 : 网址临时重定向(跳转)
  • 301 : 网址永久重定向

需要说明的是,大部分搜索引擎将“404”与“410”状态同等对待,如Google。(参见Matt Cutts的说明)

当搜索引擎在请求某个Url时得到“404”状态回应时,便会知道该网页在网站内不复存在,从而在索引数据库中将其删除,——当然,这个删除过程有可能需要很长时间——而当搜索引擎得到“200”状态回应时,则会认为该url是有效的,并将其回到到索引数据库中。

404页面返回“200”状态码的后果

如果网站的自定义404错误页面在url无效时不返回“404”状态码而代之以“200”,会发生什么情况呢?很明显,搜索引擎会认为这个“根本不存在的”网页在网站内是存在的,这会导致很多问题,影响网站的最终SEO效果。

举例来说,比如说对“http://www.haohtml.com/a.html”、“http://www.haohtml.com/b.html”这两个在IT技术点评网站内并不存在的url而言,如果搜索引擎得到的回应状态码是“200”,那么,便会将其收录到索引数据库,这样的结果便是这两个不同的url具有完全相同的内容:自定义404错误页面的内容,这类重复文本(Duplicate Content)的现象对许多搜索引擎而言都是大忌。尤其是考虑到网站中不可能只有这两个无效链接,毕竟在网站建设中,无论网站的内部链接还是外部链接,总会不可避免地出现许多比如说拼写错误的情况,类似的重复内容会更多。这样,对搜索引擎而言,特别是Google,不但很难获得理想的网站信任指数,也会大大降低Google对网站质量的评定。

404错误页使用Meta Refresh带来的302问题

常常看到许多网站的自定义404错误页面采取类似这样的形式:首先显示一段错误信息,然后,通过Meta Refresh将页面跳转到网站首页、网页地图或其他类似页。根据具体实现方式不同,这类404页面可能返回“200”状态码,也可能返回“302”,但不论哪种,从SEO的角度看,均不是一种合适的选择。

对“200”状态的情况我们上面已经谈过,那么,当404页面返回“302”时,搜索引擎会怎么对待呢?从理论上说,对“302”错误,搜索引擎认为该网页是存在的,只不过临时改变了地址,仍然会索引收录该页,这样,同样会出现类似于“200”状态码时的重复文本问题;其次,以google为代表的主流搜索引擎对302重定向的适用范围要求越来越严格,这类不当使用302重定向的情况存在很大的风险。

因此,尽量不要在404错误页中使用这类Meta Refresh方法。如果实现希望实现类似的功能,即让显示错误信息几(十)秒后跳转到首页或其他页面,可以考虑在404错误页中使用Java Script跳转。——Java Script对搜索引擎而言是无益同时也无害的。

确保自定义404错误页面能够返回“404”状态码

在自定义404错误页面设置完毕后,一定要检查一下其是不是能够正确地返回“404”状态码。

检查的方法也相当简单,使用本站提供的Server Header检查工具,或其他类似工具如这个,输入一个网站内不存在网页的url,查看一下HTTP Header的返回情况,确信其返回的是“404 Not found”。