Apache 2.4 將域名指向www及默認跳轉https的方法

對於單個域名的ssl證書來說,我們只能用在單一的common name上,例如www.mydomain.com,而mydomain.com或者eagle.mydomain.com是沒有辦法使用的。除非我們購買了wildcard的證書,否則我們需要使用Apachemod_rewrite來達到跳轉到ssl證書所保護的地址上。

我們需要達到的效果:將所有對於mydomain.com/any/file/pathhttp://www.mydomain.com/any/file/path的請求跳轉到對應的https://www.mydomain.com/any/file/path


要完成以上的步驟,我們需要使用apachevhosts。這裏默認我們已經建立了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.comhttp://www.mydomain.com的請求都會默認跳轉至https://www.mydomain.com上了。


那麼如果我們僅僅是需要將mydomain.com的請求全部跳轉至www.mydomain.com呢?

也很簡單,我們只需要創建www.mydomain.com.confmydomain.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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章