如何配置域名指向
半年前,得一位小朋友提醒,我姓名全拼的com/net/cn域名,竟然都还未被注册,遂果断入手。现在,正好用于新版博客,很酷!
虽然自己接触网站技术很早,但一直都是在用现成平台(诸如各种个人博客空间、花生壳动态域名等),真正到从头部署域名,这竟然还是第一次。其间顺带学习些尚未完全过时的初级技术,并做此笔记。
域名解析配置
在域名申请网站的控制台页面中,可以对每个域名进行“解析”的配置。其中最主要的两种配置记录简介如下:
-
A
记录:将某个子域名指向到目的IP地址。这里,填写二级域名的部分即可,也可以将该项空着:域名 记录 名称 指向 访问方式 yanlinlin.cn A www 39.106.8.225 http://www.yanlinlin.cn/ yanlinlin.cn A <空着> 39.106.8.225 http://yanlinlin.cn/ -
CNAME
记录:相当于配置域名别名,将某个域名指向另一个域名:域名 记录 名称 指向 访问方式 yanlinlin.com CNAME www yanlinlin.cn http://www.yanlinlin.com/ yanlinlin.net CNAME www yanlinlin.cn http://www.yanlinlin.net/
总结起来,A
记录相当于是域名指向关系的“原始”定义,其优势是可以允许填写的“名称”为空,从而用于定义一级域名(即域名中只有一个点的,如“yanlinlin.cn”)。而CNAME
起到类似超链接的作用,多个不同域名可以指向同一个其他域名,这样一旦需要修改IP地址时,只需要修改后者的A
记录,而其他域名的CNAME
记录可以保持不变。而CNAME
记录不允许填写“名称”为空,因而只能用于配置二级域名,而不能配置一级域名。
301转向配置
在配置上述域名指向后,同一个网站页面就会有多个不同网址可以访问。如果想将其他域名的访问都汇集起来,最终在用户浏览器上呈现为同一个网址(域名),则需要用到301转向配置。可以在apache系统配置上实现,也可以在页面目录的.htaccess
文件中配置。
这里,我给出我在apache配置文件中的设定方法:
<VirtualHost *:80>
ServerName www.yanlinlin.cn # 主域名
ServerAlias yanlinlin.cn # 其他别名域名
ServerAlias www.yanlinlin.com
ServerAlias yanlinlin.com
ServerAlias www.yanlinlin.net
ServerAlias yanlinlin.net
...
<Directory "/var/www/blog">
RewriteEngine On # 开启rewrite功能,后面是转向条件
RewriteCond "%{HTTP_HOST}" "^yanlinlin.cn" [NC,OR]
RewriteCond "%{HTTP_HOST}" "yanlinlin.(com|net)" [NC]
RewriteRule ^(.*)$ http://www.yanlinlin.cn/$1 [L,R=301,NC]
</Directory>
</VirtualHost>
两行RewriteCond
是转向条件。其中:HOST_HOST
是当前访问域名;NC
表示判断忽略大小写;OR表示“或”条件,跟下一行的条件一起做判断。
最后一行RewriteRule
是转向规则。这里用到了正则表达式,用于从原URL中提取字符串,并将其拼成新URL,实现转向。
配置完成后,需要开启rewrite模块,并重启apache:
a2enmod rewite
service apache2 restart