不断有朋友在博客问关于多个域名指向同一网站的问题,按说这是一个很基础很简单的问题,但对新手来说,可能有些误解,我在这里详细说下。

这里多个域名指向同一网站,是指裸域名(root domain)和其他如带www的域名指向同一网站。如输入abc.com或者www.abc.com,都是访问abc.com,正如本博客一样;或者输入abc.com或者www.abc.com,都是访问www.abc.com,如淘宝。

还有一种输入abc.com或者www.abc.com,不跳转,但网页内容是一致的,如广告中国(advertcn.com)。


首先,说点基础知识。当一个人访问一个网站,

第一步你的电脑要到这个域名的dns服务器去把域名换成相应的ip,因为ip才是互联网真正的地址和门牌号,域名只不过是方便记忆的别名而已。(中间可能还有dns缓存服务器的过程);

第二步,你的电脑将访问网站的请求发送你的网站服务器,我们的一键包中nginx就是专门处理这种请求的,它根据发来的数据进行处理;

第三步,如果是静态网站,就直接在服务器上读取相应文件的数据(如果是动态的,就将请求数据发送到如php处理后再获取数据),发送给你的电脑浏览器,浏览器将数据解析,然后就展现了缤纷丰富的网页。


那么,如果出现问题,就应该根据相应错误,在这三个方面进行排除,找到正确的地方进行处理。


如果多个域名指向同一网站出问题,在排除dns设置出错之后,一般问题都出在nginx的配置上。

一般dns设置添加www为aname,指向根域名的同一ip(或者设置www的cname为@)


那么,有这么几种设置方法,供参考:

1、多个域名指向同一网站,并301跳转。推荐用这个方法。


比如我的博客actgod.com,nginx的设置是这样的:

vim /etc/nginx/sites-enabled/actgod.com.conf 修改其中这一部分,其他照旧

server_name actgod.com www.actgod.com *.actgod.com;

root /var/www/actgod.com;

if ( $host != "actgod.com" ) {

rewrite ^/(.*)$ http://actgod.com/$1 permanent;

}


如果是想实现淘宝的那种跳转:

server_name actgod.com www.actgod.com *.actgod.com;

root /var/www/www.actgod.com;

if ( $host != "www.actgod.com" ) {

rewrite ^/(.*)$ http://www.actgod.com/$1 permanent;

}


修改好后,重新加载配置:

invoke-rc.d ngxin reload

2、多个域名指向同一网站,使用refresh跳转,百度是用的这个方法,也就是输入baidu.com自动跳转到www.baidu.com,但没用301跳转。

首先用

bash damnp-actgod.sh dhost yourdomain.com 建一个空的虚拟主机。在此虚拟主机目录下新建一个index.html

vim /var/www/yourdomain.com/index.html 内容如下:

<html>

<meta http-equiv="refresh" content="0;url=http://www.yourdomain.com/">

</html>



这种方法,一般来说不如第一种的,特别是从seo的方面考虑,同时需要多加载一个index,速度也有影响,虽然微乎其微。


3、广告中国那种不跳转,只需要修改配置:

vim /etc/nginx/sites-enabled/actgod.com.conf

server_name 后面添加多个域名即可,其他不用改。

server_name actgod.com www.actgod.com *.actgod.com;


最后说下泛域名解析指向同一个网站。

也就是输入任何xxx.actgod.com都指向actgod.com,只需要在dns服务器设置 * 的aname为根域名同一ip,server_name 后面加上*.actgod.com即可。如果要跳转,同上设置。


原文http://actgod.com/archives/92/






via iGFW http://igfw.net/archives/11536

多域名对应同一网站、跳转的三种方法及泛域名设置

Posted on

2012年9月8日星期六

Category