对于单个域名的ssl证书来说,我们只能用在单一的common name上,例如www.mydomain.com,而mydomain.com或者eagle.mydomain.com是没有办法使用的。除非我们购买了wildcard的证书,否则我们需要使用Apache的mod_rewrite来达到跳转到ssl证书所保护的地址上。
我们需要达到的效果:将所有对于mydomain.com/any/file/path及http://www.mydomain.com/any/file/path的请求跳转到对应的https://www.mydomain.com/any/file/path上
要完成以上的步骤,我们需要使用apache的vhosts。这里默认我们已经建立了ssl版本的vhost文件,并且https://www.mydomain.com可以正常访问。本文使用的环境是Ubuntu 16.04 + Apache 2.4,如果你的apache版本较老,请根据官方文档做相应调整。
基本的思路就是新建www.mydomain.com.conf这个vhosts文件,然后添加上Rewrite Rules。
好了,那我们就开始。首先从默认的vhosts文件复制出我们需要的配置文件:
$ cd /etc/apache2/sites-available
$ ls -l
000-default.conf default-ssl.conf
$ cp 000-default.conf www.mydomain.com.conf
接下来我们修改www.mydomain.com.conf:
$ vim www.mydomain.com.conf
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
RewriteEngine On
RewriteRule ^/(.*)$ https://www.mydomain.com/$1 [R=301]
</VirtualHost>
这样一来www.mydomain.com的跳转就配置好了,接下来我们运行
$ a2ensite www.mydomain.com
$ systemctl restart apache2
完成后我们所有对于mydomain.com及http://www.mydomain.com的请求都会默认跳转至https://www.mydomain.com上了。
那么如果我们仅仅是需要将mydomain.com的请求全部跳转至www.mydomain.com呢?
也很简单,我们只需要创建www.mydomain.com.conf及mydomain.com.conf这两个vhosts文件,然后在mydomain.com.conf添加我们的Rewite Rules:
$ vim mydomain.com.conf
<VirtualHost *:80>
ServerName mydomain.com
RewriteEngine On
RewriteRule ^/(.*)$ www.mydomain.com/$1 [R=301]
</VirtualHost>
然后www.mydomain.com.conf中正常填写我们的配置即可:
$ vim www.mydomain.com.conf
<VirtualHost *:80>
ServerName www.mydomain.com
# Your other options go here...
</VirtualHost>
完成后,输入以下命令就可以了:
$ a2ensite www.mydomain.com
$ a2ensite mydomain.com
$ systemctl restart apache2
Apache 2.4 域名自动跳转到www和HTTPS配置

本文介绍了如何在Apache 2.4环境中使用mod_rewrite模块,将非www和非HTTPS的域名请求自动跳转到对应的www开头并采用HTTPS的URL。主要内容包括创建新的.htaccess文件,编写RewriteRule实现重定向,以及针对仅需跳转至www的特定情况的配置方法。
2881

被折叠的 条评论
为什么被折叠?



