域名301重定向

心中一直有执念,一个网站只能使用一个域名。比如我这个博客站点,使用的是 www.jiangyu.org 这个域名,如果用 jiangyu.org 访问,会跳转到 www.jiangyu.org 。研究SEO的会认为这样更有利于网站权重云云,而对我真的就是执念了。

域名

一个知识点要明确, jiangyu.org 是一级域名, www.jiangyu.org 是二级域名。org是域名后缀,常见的域名后缀还有com,cn,net以及一些个性化的域名后缀,比如xyz,name,sb,run等等。

上面的例子中www可以看成是主机名,代表web网站,类似的约定俗成的还有ftp,mail,bbs等。

个人习惯,对于常见的域名后缀,我喜欢用 www.xxx.com 来做网站主域名,将 xxx.com 跳转到 www.xxx.com 。而对于一些个性化后缀的域名,我习惯用 xxx.name 来做网站主域名。个人观感上,个性化后缀的域名优点在于短小,就没必要再在前面加www。比如我用 ipc.name 做主域名,而不会用 www.ipc.name

301重定向

现在回到这篇文章的重点,对于一个网站,如何将 xxx.com 跳转到 www.xxx.com ,也即如何做域名301跳转,也叫301重定向。

301是http状态码,含义是永久重定向,比如 jiangyu.org 永久的重定向到 www.jiangyu.org ,你在网页浏览器里输入 https://jiangyu.org ,实际打开和显示的会是 https://www.jiangyu.org

其他的http状态码还有很多,比如200,404,500等,完整的http状态码可以查看这个页面:HTTP 响应状态码

web服务器设置301重定向

实现301重定向的方法很多。最常见的是在web服务器里做设置。目前用的比较多的web服务器是apache和nginx。

nginx 301重定向配置方法

打开 nginx.conf 文件,找到 server 配置段:

1
2
3
4
5
#REWRITE-START
if ($host ~ '^jiangyu.org'){
return 301 https://www.jiangyu.org$request_uri;
}
#REWRITE-END

apache 301重定向配置方法

在.htaccess文件中加入以下规则:

1
2
3
RewriteEngine On
RewriteCond %{HTTP_HOST} !^jiangyu.org$ [NC]
RewriteRule ^(.*)$ https://www.jiangyu.org/$1 [L,R=301]

宝塔面板

宝塔面板之类的工具,有301重定向快捷方式,根据提示操作即可。下图为宝塔面板301重定向设置界面:

宝塔面板301重定向设置

域名解析里设置301重定向

对于没有web服务器的站点,比如我这个博客,使用hexo框架生成静态文件,然后上传到腾讯云cos里,没法直接在cos里设置301重定向,可以在域名解析里实现301重定向。

在域名解析里,设置好主机名,记录类型选择显性URL,记录值填写需要定向到的地址。下图是dnspod设置显性URL 301重定向的截图:

DNSPOD设置显性URL 301重定向

显性URL意味浏览器地址栏最后会显示重定向到的地址( https://www.jiangyu.org ),而不会是用户在浏览器里输入的地址(比如 https://jiangyu.org )。

比较郁闷的是,我这个域名使用了腾讯的域名邮箱,在dnspod里已经做了MX邮箱解析,再做 jiangyu.org 显性URL解析,提示有冲突,可能导致不可用。尝试了下,果然如此, jiangyu.org 解析不能正常重定向到 www.jiangyu.org ,ping了下,被解析到了一个腾讯云的ip,估计是其域名邮箱服务器的。

最后想到个取巧的办法,用 jiangyu.org 新建一个空网站,使用nginx服务器,然后设置nginx 301重定向,将 jiangyu.org 重定向到运行在cos里的静态网站 www.jiangyu.org 。了却一桩心事!


屠夫9441 提醒,使用Cloudflare给域名做DNS解析(不开启CDN),然后在page rule里做301重定向。

RSS订阅及信息聚合 武帝踞厕而见卫青

  评论