相信不少人有使用过好几个子域名的情况。一般来说,子域名是看起来比较好看的,而且现在的域名基本上都支持泛域名的情况下,子域名的使用更是广泛,也越来越多人使用了泛域名解析。
不过泛域名的使用,却会给我们带来一定的麻烦。特别对于一些新人来说,泛域名的不正确使用更是一种麻烦。
相信不少站长朋友都出现过一种情况,在我们初期使用了泛域名解析不同的网站程序之后,发觉自己对网站的定位或者构架不明确,而将网站进行更换程序。
那么,这时候麻烦就开始了,对于搜索引擎来说,泛域名上曾经提交的入口是依旧存在的。这时候就会出现好几个域名同时收录一个网站的情况。
待我们发觉时候,也许有几个我们废弃的域名已经是收录了不少内容,加上一些广告联盟的域名绑定设置,让我们废弃的域名变得十分难看。
那么这时候我们怎么处理?当然,我们可以使用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)