301重定向技术

关于重定向

在我们的网站建设中,时常会遇到需要网页重定向的情况:如网页目录结构改变、页面URL修改,再或者网页扩展名改变(如因需要把.php改成.html或.shtml)。在这些情况下,如果不对原URL做重定向,则通过用户收藏夹或搜索引擎数据库中的旧地址只能让访客得到一个404错误信息的页面,给访客以非常差的用户体验同时,访问流量也会白白丧失。再如某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点,等等…

常用的重定向方式有:301重定向、302重定向、JavaScript重定向、PHP/ASP/CGI重定向、META Refresh等。

关于301重定向

301重定向(Permanently Moved),又叫301转向或301跳转,是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种(其它常见的状态码还包括,200表一切正常,404网页找不到,302暂时转向,等等),表示本网页永久性转移到另一个地址。301重定向是网页更改地址后对搜索引擎友好的最好方法,这不难实现并且可以使特殊的页面在搜索引擎中保持优先等级(Rinking),只要不是暂时搬移的情况,都建议使用301来做转址。

其他常用的重定向

  • 302重定向:302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。
  • META Refresh:这在2000年前比较流行,不过现在已很少见。其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之內),会被判断为spam。

为什么要用301重定向?

301重定向可促进搜索引擎优化效果。从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法。当网页A用301重定向转到网页B时,搜索引擎可以肯定网页A永久的改变位置,或者说实际上不存在了,搜索引擎就会把网页B当作唯一有效目标。好处是,第一,没有网址规范化问题,第二,也很重要的,网页A的PR网页级别会传到网页B。

302重定向可能会有URL规范化问题。迄今为止,能够对302重定向具备优异处理能力的只有Google。也就是说,在网站使用302重定向命令将其它域名指向主域时,只有Google会把其它域名的链接成绩计入主域,而其它搜索引擎只会把链接成绩向多个域名分摊,从而削弱主站的链接总量。既然作为网站排名关键因素之一的外链数量受到了影响,网站排名降低也是很自然的事情了。其它方法都是常用的作弊手法,当然不是说不可以正当地用,方法本身没有错,但被作弊者用多了,搜索引擎对这些可疑的转向都很敏感。
感兴趣?继续阅读 »

为我的Wordpress做SEO

什么是SEO?

SEO 是英文Search Engine Optimization的缩写,其中文意思是搜索引擎优化。从事这方面工作的是Search Engine Optimizer,搜索引擎优化师,他们利用工具或者其他的各种手法使自己的网站符合搜索引擎的搜索规则从而获得较好的排名(也就是常说的网站优化)。在网络营销中,搜索引擎优化排名是一种非常重要的手段,SEO主要就是通过对网站的结构、标签、排版等各方面的优化,使Google等搜索引擎更容易搜索网站的内容,并且让网站的各个网页在Google等搜索引擎中获得较高的评分,从而获得较好的排名。

考虑我的站点的具体情况,我实施了以下SEO方案:

1、在使用Wordpress之前,我的Blog用的是ASP的LBS^2程序,而且在转换过程中我更换了域名和目录结构,这样所有原来的页面都发生了URL的变更。通过在原来的ASP整站程序上做301重定向到现在站点的修改,可以防止被链接到的旧页面出现404,而且还很友好地将浏览者带入了新的URL,原来的PageRank也能转移到新的URL上。

2、启用Permalink,将文章的永久链接结构设置成友好的“/%category%/%postname%.html”。为什么要使用Permalinks,车东的《Search Engine Friendly的URL设计》有详细的说明。但启用Permalink的同时,我的每篇文章的URL都会变成两个,一个是我用Permalink设置的链接结构形式,还有一个是/?p=id的形式。考虑到URL网址规范化问题(主要是说要让网站的URL地址唯一化,不然会被搜索引擎当成是复制内容网页的作弊手段而影响搜索引擎结果排名),安装Permalink Redirect插件,对整站的URL进行唯一化。这个插件虽然使用起来非常简单,但重定向的功能却非常完善。除了可以搞定上面的问题,还可以将首页的地址唯一化,比如你输入本站的其他首页地址http://uiland.com、http://www.uiland.com/index.php或http://uiland.com/index.php,都可以直接重定向到http://www.uiland.com。在刚刚安装好Wordpress时我将文章的永久链接结构设置的是“/%year%/%monthnum%/%day%/%postname%/”,在我更换成新的结构后,Permalink Redirect也可以很容易地把原来的URL重定向过来。

3、为站点添加robots.txt,引导spider去爬我指定的内容。

4、启动Sitemap,向搜索引擎提交我站点中的页面URL和各种页面访问信息。使用Google Sitemap plugin for wordpress可以很容易的实现,这可比原来用LBS^2时方便多了。
感兴趣?继续阅读 »

6green电子杂志“6G-Zone”创刊!

“6G-Zone”创刊!

经过几个月来的辛勤酝酿,理工人自己的电子杂志终于和大家见面了。
这本杂志内容丰富,贴近校园,希望我们的努力可以为大家的校园生活增添一道新的色彩。
一路同行,以有限创造无限,让我们所有的理工人与我们自己的理工人网站一起朝着梦想前进!

下载地址:http://www.6green.com/downloads/view.jsp?id=321
感兴趣?继续阅读 »

北京2008年奥运会奖牌设计方案

在3月27日北京奥运会倒计时500天之际,北京奥组委在首都博物馆隆重发布北京2008年奥运会奖牌式样。

北京2008年奥运会奖牌直径为70毫米,厚6毫米。奖牌正面为国际奥委会统一规定的图案——插上翅膀站立的希腊胜利女神和希腊潘纳辛纳科竞技场。奖牌背面镶嵌着取自中国古代龙纹玉璧造型的玉璧,背面正中的金属图形上镌刻着北京奥运会会徽。奖牌挂钩由中国传统玉双龙蒲纹璜演变而成。整个奖牌尊贵典雅,中国特色浓郁,既体现了对获胜者的礼赞,也形象诠释了中华民族自古以来以“玉”比“德”的价值观,是中华文明与奥林匹克精神在北京奥运会形象景观工程中的又一次“中西合璧”。

国际奥委会对奥运会奖牌的材质及其识别性、重量、尺寸、图案等都有严格规定。奥运会比赛项目冠军和亚军的奖牌质地为纯银,冠军奖牌还要镀有不少于6克的纯金。以往奥运会的奖牌在材质的使用上均没有突破,北京奥运会奖牌则创造性地将玉嵌其中。这一设计不仅符合国际奥委会的相关规定,也彰显了“玉”的高贵品质,喻示了中国传统文化中的“金玉良缘”,体现了中国人民对奥林匹克精神的礼赞和对运动员的尊至褒奖。

奖牌金配白玉,银配青白玉,铜配青玉。

设计图
感兴趣?继续阅读 »

HostMonster外发Wordpress中文邮件乱码问题搞定

在我正在为HostMonster的发邮件乱码和Dreamhost Down机事件频繁而难以选择时,hleego给了我一个很重要的提示:如何在HostMonster上使用mail函数发出中文内容邮件?

可能默认并不支持非ASCII编码的信息传递。解决方法之一是,使用mb_send_mail代替mail函数,目的是在提交信息给MTA前,将信息使用适合的字符重新编码。

下载: mailtest.php
  1. <?php
  2. $to = 'yourmail@domain.com';
  3. $subject = '测试 Test';
  4. $message = '中文测试 Chinese Test';
  5. $headers = 'From: testmail@domain.com' . "\r\n" .
  6.    'Reply-To: replymail@domain.com' . "\r\n" .
  7.    'X-Mailer: PHP/' . phpversion();
  8.  
  9. /* Set internal character encoding to UTF-8 */
  10. mb_internal_encoding("UTF-8");
  11.  
  12. mb_send_mail($to, $subject, $message, $headers);
  13.  
  14. print "Please check test result at $to address. Make notice at Spam directory.";
  15. ?>

通过尝试,这种办法果然可行!马上动手修改Wordpress,瞬间搞定了全部乱码!

同样遇到此类问题的朋友,可下载我的修改文件my-hack.txt,下载后将后缀改为.php,修改第13、66行的发信地址为您的电邮地址,并上传至Wordpress根目录。然后登陆您的后台,在“设置”-“其他”中,将“兼容旧版 WordPress 中的 my-hacks.php 文件”钩选并保存即可,马上试试吧!

这回可以安心的用HostMonster了,但HostMonster的SMTP依然有问题存在,只是被换个方法绕道而行了。

HostMonster 外发中文邮件乱码问题难解决

经过大量的网速测试,这回用HostMonster算是放心了,毕竟这142.8美刀没有白花,然而马上又遇到了新的问题,而且看起来是难以解决的问题。使用PHP外发的邮件中,英文字符正常,中文字符全显示为乱码。

又是一个乱码的问题,仔细察看邮件头,邮件编码为utf-8,原因肯定出在邮件的发送上。在邮件的发送过程中,可能有很多因素会导致邮件乱码,邮件头、邮件的正文字符、还有就是SMTP服务器。问题还得挨个排除,找一个带有邮件发送测试功能的PHP探针传上去,经过测试中文还是乱码,于是写了一个最简单的mail()函数上去,同时发送中英文的字符作为测试,结果还是一样。现在邮件头和正文字符的因素都可以排除了,那么只剩下SMTP服务器了,难道真的是它的原因?查看了一下Cpanel的网页源文件,meta标签中content=”text/html; charset=iso-8859-1″,于是我推测SMTP也是用的“iso-8859-1”编码,对于这种编码网上的解释是:

单字节字符编码: ISO-8859-1
最简单的编码规则,每一个字节直接作为一个 UNICODE 字符。比如,[0xD6, 0xD0] 这两个字节,通过 iso-8859-1 转化为字符串时,将直接得到 [0x00D6, 0x00D0] 两个 UNICODE 字符,即 “?D”。
反之,将 UNICODE 字符串通过 iso-8859-1 转化为字节串时,只能正常转化 0~255 范围的字符。

看来,我的推测是符合上述解释的。

通过与HostMonster客服的反复交涉,他们也承认了自己的SMTP服务器是只能传送单字节字符的,然而什么时候能解决确实未知的。

Dear Customer,
There is a known problem with character encoding (specifically UTF-8 and a couple of others) and CPanel. Our admins are aware of the problem and are working on a solution for it. We do not have a specific time frame within which it will be resolved. We apologize for any inconvenience that this may cause.

感兴趣?继续阅读 »

成功由LBS^2转为Wordpress!

经过连续三天多的试验和调试,终于成功地将博客从LBS^2转成了Wordpress。先要小小庆祝一下,因为这实在是一个枯燥乏味的过程。

像每一位由LBS^2转到Wordpress的朋友一样,我也遇到了中文显示乱码的问题。最初问题是在导入LBS的SQL数据时总会报错,从网上找了一些这方面的解决办法,发现MySQL的版本很重要,我用的HostMonster默认提供的MySQL版本为4,为了成功解决乱码问题,我只好请客服帮忙将空间和数据库从PHP4+MySQL4升级到PHP5+MySQL5。这个过程我等了两天,给客服发过两次邮件,第一次是递交申请,然后马上收到了客服要求确认申请和核实身份信息的邮件,并告诉我备份站点所有数据,这一点倒是做得挺正规的,回复完后就只有等了。空间升级完成后,客服又给我发了封邮件,于是马上进后台看了一下,发现PHP是5.2.0,MySQL是最新版5.0.27,IP已经已经发生了改变,心想客服肯定是将站点从原来PHP4+MySQL4的服务器搬到这台上的。

现在,数据库版本的问题已经搞定了,可乱码问题仍旧没有解决。MySQL的连接校对和每个表的整理字符集全都改成了utf8_unicode_ci,LBS的SQL命令文本也是从SQL的执行窗口执行的,wp-db.php的数据传送编码也改好了,可问题出在哪里呢?后来终于从aw那里找到了可行的办法,原来还要考虑一下Wordpress的版本问题。
感兴趣?继续阅读 »