.htaccess文件对Linux空间进行泛域名301跳转的实现

网站建设 2019-10-29

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

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

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

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

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

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

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

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

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

信息

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

需要解决问题

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

情况分析

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

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

解决过程

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

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

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

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

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

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

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

.htaccess文件具体如下:

  %{_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跳转也完成了。

评论 (0)
    Top