建站经验 experience
当前位置:首页 > 网站建设专题 > 建站经验
.htaccess文件对Linux空间进行泛域名301跳转的实现
发布日期:2011-09-22 阅读次数:763 字体大小:

相信不少人有使用过好几个子域名的情况。一般来说,子域名是看起来比较好看的,而且现在的域名基本上都支持泛域名的情况下,子域名的使用更是广泛,也越来越多人使用了泛域名解析。

不过泛域名的使用,却会给我们带来一定的麻烦。特别对于一些新人来说,泛域名的不正确使用更是一种麻烦。

相信不少站长朋友都出现过一种情况,在我们初期使用了泛域名解析不同的网站程序之后,发觉自己对网站的定位或者构架不明确,而将网站进行更换程序。

那么,这时候麻烦就开始了,对于搜索引擎来说,泛域名上曾经提交的入口是依旧存在的。这时候就会出现好几个域名同时收录一个网站的情况。

待我们发觉时候,也许有几个我们废弃的域名已经是收录了不少内容,加上一些广告联盟的域名绑定设置,让我们废弃的域名变得十分难看。

那么这时候我们怎么处理?当然,我们可以使用404页面进行跳转到首页,不过这对于用户来说,是比较不方便的。

其实对于这些,我们可以使用301转向来解决,这样不单对用户方便,也可以将用户转移到主域名上,更可以使权重集中。

我在写这篇文章的时候,也刚好碰上了这个问题。

在现在的网站全部集中到带www的域名之前,网站曾经是个Discuz论坛,并且使用了论坛内置的子域名系统,几个子域名在搜索引擎上都有入口。

空间信息

Linux系统构架的Apache虚拟空间,管理面板Cpanel。

需要解决问题

实现现有网站已被收录的子域名页面集中到主域名,并且页面正常访问。

情况分析

因为是虚拟空间,就无法对Apache进行管理。

因为使用的是Apache空间,需要考虑大小写问题。

解决过程

本来开始选择的是使用DNSPod的URL转向,因为怕有一些链接是在搜索引擎暂时没有来路而不清楚是否被收录,所以对整个泛域名进行URL跳转。

不过由于国内已经不允许进行URL跳转,Dnspod使用的服务器在国外,反应速度稍慢。并且Dnspod的URL跳转会对域名后的网址转化为小写。

而虚拟空间无法对Apache进行管理,就无法实现no case功能。

故而是对这一办法放弃了。

这时候本人想到了.htaccess文件。

在.htaccess中,也是可以实现301转向的。

首先解决的是大小写问题,这个比较简单,.htaccess中是可以忽略大小写的。那么唯一的问题就是对泛域名的转向了。因为不知道在使用泛域名的时候被收录了多少,只好对整个泛域名进行跳转。

.htaccess文件代码具体如下:

RewriteCond %{HTTP_HOST} ^.*.www.AAA.com$ OR

RewriteCond %{HTTP_HOST} ^a-vx-z0-9\.\_\-*.AAA.com$ NC

rewriterule ^(.*)$ http://www.AAA.com/$1 L,R=301

在.htaccess文件中,使用“.”可以定义除换行符外的所有字符。

使用*可以定义字符长度为不限制长度。

NC为不区分大小写。

本人在代码中使用a-vx-z0-9\.\_\-而不直接定义字母a-z的原因,是避免出现www.AAA.com变成301跳转到www.AAA.com的死循环出现。

对第一行再次进行定义,是因为查询的时候发现曾经出现带两个www.的域名被收录。

至此,问题解决,泛域名的301跳转也完成了。

文章由33天影视提供,转发请保留链接。(百度影音http://www.33tian.com)