最近在DigitalOcean搞了台服务器(一个月只要$5哟~),顺便把博客迁移到这上面。博主有两个域名:zwlme.comzhuowenli.com,然后就想让所有的域名都可以直接跳转到zhuowenli.github.io这个主域名上。

尝试了几个方案,最终觉得用.htaccess来实现域名跳转到zhuowenli.github.io会比较友好。

今天博主就来给大家分享如何使用.htaccess实现301重定向。

绑定域名

首先,我们需要把两个域名都通过A记录解析到服务器上。

1
2
3
4
5
6
7
8
9
10
// zhuowenli.com
记录类型 主机记录 记录值
A www [:服务器ip地址] // 将域名解析为zhuowenli.github.io
A @ [:服务器ip地址] // 将域名解析为zhuowenli.com(不带www)


// zwlme.com
记录类型 主机记录 记录值
A www [:服务器ip地址] // 将域名解析为zhuowenli.github.io
A @ [:服务器ip地址] // 将域名解析为zwlme.com(不带www)

服务配置

博主在购买服务器的时候,选择了有lamp的镜像,所以只要配置下Apache,把网站根目录指向博客根目录下的_site文件就行了,具体过程:

略。

设置重定向

在网站根目录下创建.htaccess文件,然后编辑该文件:

1
2
3
4
5
6
# 切换到网站根目录
# 创建.htaccess
touch .htaccess

# 编辑该文件
vim .htaccess

输入如下代码:

1
2
3
4
5
6
7
8
9
#启动重写引擎
RewriteEngine On

#匹配以zhuowenli.github.io、zwlme.com、或者zhuowenli.com开头的域名
RewriteCond %{http_host} ^(www.)?zwlme.com$ [NC,OR]
RewriteCond %{http_host} ^zhuowenli.com$ [NC]

#这些域名的任何网址都重定向到zhuowenli.github.io,返回码是301
RewriteRule ^(.*)$ http://zhuowenli.github.io/$1 [R=301,L]

然后,还没完呢!

重新配置Apache(基于LAMP)

编辑配置文件:

1
2
3
4
5
6
7
8
# 切换到Apache配置目录
cd /etc/apache2

# 执行ls命令会发现下列文件、文件夹
apache2.conf conf-available conf-enabled envvars magic mods-available mods-enabled ports.conf sites-available sites-enabled

# 编辑配置文件
vim apache2.conf

apache2.conf下所有的 AllowOverride None 改为 AllowOverride All

1
2
3
4
AllowOverride None

# 改为:
AllowOverride All

启用mod_rewrite.so模块:

1
2
# 将mods-available目录下的rewrite.load复制到mods-enabled下
cp mods-available/rewrite.load mods-enabled/

OK!配置完毕,接下来重启下Apache服务就行啦

1
sudo /etc/init.d/apache2 restart

最后,你就会发现:访问zwlme.comzhuowenli.github.io或者zhuowenli.com的时候,域名都会自动跳转到zhuowenli.github.io这个主域名了!。