设置网站 http 访问强制跳转至 https 访问
By 辞峡烟斜
如今越来越多网站启用 https 访问来加强网站的安全性。本博客网站也是最近才正式使用 https 。启用了 https ,网站要么取消之前的 http 访问,但这样一来,之前的网站内容链接将打不开,这点很多站长都不愿意看到,毕竟网站存在很多年,难免会有一些粉丝,突然切断之前的链接,体验性不佳也不友好;要么就是既可以 http 访问,又可以 https 访问,但这样不能提高网站的安全性。我认为,比较友善的做法是,同时开启 http 和 https ,并设置 http 访问强制跳转至 https 访问。以本站为例,要达到效果就是,如果要访问" http://www.yiwan.org/index.php/ltd_documents/361-linux-vps-server-login-security.html “,则浏览器自动跳转至访问” https://www.yiwan.org/index.php/ltd_documents/361-linux-vps-server-login-security.html " 。
设置方式,通过搜索,网上教程一大堆,五花八门,如添加 .htaccess 文件作重定向、针对某个目录跳转、针对某个网页跳转等,太过繁杂。偶然网上看到一篇文章(https://www.digitalocean.com/community/questions/redirect-from-http-to-https),外国小哥的方式很合我意,于是采用之,经测试可行,简单方便,在此列出如下:
一、准备工作
(一)网站得使能 ssl ,对于 Apache2 ,用命令:
a2enmod ssl
同时还要使能 rewrite
a2enmod rewrite
(二) /etc/apache2/sites-availables/ 下删除之前的 000-default.conf 和 default-ssl.conf 文件(最好先备份一下),新建一个以网站域名为文件名的文件,以本博客网站为例,新建 www.yiwan.org.conf 文件。
(三) /etc/apache2/sites-enabled/ 下的所有链接文件删除。
二、网站配置
新建的 www.yiwan.org.conf 文件内容如下:
<VirtualHost *:80> ServerName www.yiwan.org ServerAdmin webmaster@localhost DocumentRoot /home/litanid/litanid_WWW/LiTa ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> ServerName www.yiwan.org ServerAdmin webmaster@localhost DocumentRoot /home/litanid/litanid_WWW/LiTa SSLEngine on SSLCertificateFile /home/litanid/.ssl/apa-letsencrypt/www.yiwan.org/fullchain.pem SSLCertificateKeyFile /home/litanid/.ssl/apa-letsencrypt/www.yiwan.org/key.pem ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> </IfModule>
三、后期工作
除以上内容之外,无需添加或修改任何配置。后期工作:
(一)使能网站配置
a2ensite www.yiwan.org.conf
这将自动在 /etc/apache2/sites-enabled/ 下生成指向 /etc/apache2/sites-availables/www.yiwan.org.conf 的软链接文件。
(二)重启 Apache2 ,使设置生效即可。
/etc/init.d/apache2 restart