一个竟然存在了四年的博客
Lighttpd下的301重定向
步入正题,有关301重定向的问题,网上一大堆,大都是差不多的文章,可以参考百度百科,也可以参考月光的301重定向的实现方法。
资料基本上都是讲apache, ASP, PHP, JavaScript等实现301重定向的方法的,因为我才把apache换成lighttpd,所以需要有关Lighttpd的相关资料。又因为中文的Lighttpd资料太少,使用的相对也少一些,英文资料也是很简洁,只好自己摸索。
我的要求是,不仅是首页url的重定向,整个网站里第一个url都要能重定向到对应的页面上,而不会出现404 page not found。而事实上,网上教你301重定向的方法的,基本上都是首页的重定向,所以这个对我来说没有意义。关http1.1状态的知识,可以参考:18禁“网页”和HTTP 1.1状态代码及其含义。
几种301重定向实现方法的利弊:
ASP: 几百年前我就不用了,想用也用不了。
PHP:简单,但是它只能实现文件的跳转,目录就不行了,放弃。
JavaScript:简单,但会被搜索引擎惩罚,放弃。
DNS:这个就是转发了,只能定向首页,无用。
Apache:这个我向青蛙同志借了一个Apcahe的空间亲自实验过,可以用而且很完美,规则就一句:
RedirectMatch permanent ^/(.*)$ http://www.newdomain.com/$1
直接把这句话放网站根目录下的.htaccess里就行了。
以上所有方法都不能满足我的要求,而且我不想换回apache,只能去探索Lighttpd的方法了。还好,没多会就找到了,也是一句话:
$HTTP["host"] == “www.olddomain.com” {
url.redirect = (
“^/(.*)” => “http://www.newdomain.com/$1″,
)
}
好了,关键是这句话放在什么地方,Lighttpd是没有.htaccess文件的,只能放在/etc/lighttpd/lighttpd.conf里面。这时候要注意,如果你的lighttpd.conf里面有rewrite规则的话,有可能不成功,要把上面的redirect规则放在这个文件的最前面。保存文件后在终端重启Lighttpd:service lighttpd restart.
由于我的VPS用的是Kloxo(LXadmin的前身)面版,把这个放在lighttpd.conf里面是无用的,这一点折腾了我好几天的时间,正赶上人家过圣诞节放假,求助无果。仔细阅读了lighttpd.conf,在最后面发现有这样一句:include “conf/kloxo/kloxo.conf”,才发现原来Kloxo的301重定向规则是放在/etc/lighttpd/conf/kloxo/lighttpd.yourdomain.com这个文件里的。删除里面所有内容,放入上面那个规则,重启Lighttpd服务,使用Check Server Headers Tool – HTTP Status Codes Checker检查,一切OK,所有URL都301重定向到了相对应的页面,没有一个404产生。
为了能够更好的使网站在301重定向过程中不受搜索引擎的惩罚,建议参考一下Google网站管理员中心的几篇文章:
| Print article | This entry was posted by admin on 28/12/2009 at 8:54 pm, and is filed under Website. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |

about 6 months ago
这篇文章语言很简介,通俗易懂~
评分:优
about 6 months ago
是变色龙,说了多少次了…
about 5 months ago
新年快乐啊,祝你新年身体健康、工作顺利、心想事成~
about 4 months ago
学生,我换博客了,阿给我个友情链接啊,不要吝啬PR啊,带带我,我的博客地址www.isrice.com
about 4 months ago
祝您新的一年里:万事如意。身体健康!!
about 1 month ago
太感谢了!!我也是Kloxo控制面板的VPS,CentOS的。。
about 1 month ago
我刚刚看了一下,里面有lighttpd.domain.com也lighttpd.www.domain.com,不知道要放到哪一个去。。昏啊。。。还有lighttpd.bbs.domain.com。。。
about 1 month ago
你要301哪个域名就放哪个里面, 如果是主域名的话, 带www的和不带www的都要放.