昨天仓猝地上线了https://cutehive.com,但是发现了很多小问题,@deanliu 帮我指出了一些旧链接的问题,@someguy123 帮我指出了SEO优化的问题 以及www 前缀访问的问题。
(图源 :pixabay)
链接问题我知道导致问题的原因以及如何处理,所以当时就改正了;SEO的问题嘛,因为这个站点基本上应该就是HIVE的用户使用,所以并不着急优化;但是www访问给我自己也带来一些麻烦,所以这个必须及时处理。
www 访问
我们知道网站一般会有一个域名,比如我这个cutehive.com,但是大多数网站都可以同时通过类似www.cutehive.com的方式来访问,要实现这样的效果,要解决两个问题:
- 域名解析的问题
- 网站和www子域名绑定的问题
域名解析
域名解析的问题很简单,只要创建一条CNAME记录就可以了,比如我这个域名:
改好并生效后用的EzDig软件查询,就会查到类似如下效果:
其中第二条记录就是我添加的CNAME记录,代表www.cutehive.com是cutehive.com的别名,就好比刘美女是@deanliu的别名一样。
域名绑定
但是只设置别名(CNAME),子域名(www.cutehive.com)访问只会访问到IP,而不能确保访问到网站(网站是独立IP的另当别论),所以还需要将子域名和网站进行关联。
最简便的方法是使用ServerAlias
指令,也就是Apache2的站点配置文件中除了要有ServerName
指令,还要增加ServerAlias
指令:
ServerName cutehive.com
ServerAlias www.cutehive.com
这样,我们就可以通过www.cutehive.com 访问到和cutehive.com 相同的内容了。
SSL证书 以及转发
解决了www访问的问题,新的问题是,我之前只为cutehive.com 设置了SSL证书,如果用https://www.cutehive.com 访问,有的浏览器会禁止访问,有的浏览器会给出一个大大的安全提示,这太不友好了。
所以需要给www.cutehive.com 也装个证书,这个很简单,用如下指令即可:
sudo certbot --apache
它会提示我为哪个域名开启SSL证书:
因为已经有了cutehive.com的证书,它会提示我是否扩展:
扩展完成后,有一步是把所有HTTP访问,重定向到HTTPS上:
因为之前已经存在转发设置,所以会提示:Enhancement redirect was already set.
但是实际上WWW的域名并没有给成功设置转发。
解决方法很简单,删除掉站点配置文件中的转发内容,重新执行sudo certbot --apache
就好了,设置完后,新的转发内容如下(多了第一条):
RewriteCond %{SERVER_NAME} =www.cutehive.com [OR]
RewriteCond %{SERVER_NAME} =cutehive.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
现在访问http开头的链接, 就会自动重定向到对应https链接啦.