Apache2 自動將 http 導到 https


要在 Apache 伺服器上自動將 HTTP 請求重定向到 HTTPS,你可以透過修改虛擬主機的配置來實現這一點。以下是詳細的步驟和配置示範:

步驟 1:啟用必要的模組

首先,確保啟用以下必要的 Apache 模組:

  • mod_rewrite:用於重寫規則。
  • mod_ssl:用於處理 HTTPS 連接。

你可以使用以下指令來啟用這些模組(以 Ubuntu 為例):

sudo a2enmod rewrite
sudo a2enmod ssl

步驟 2:編輯虛擬主機配置

接下來,編輯你的 HTTP 虛擬主機配置檔案(例如:000-default.conf),將 HTTP 請求重定向到 HTTPS。通常這些配置檔案位於 /etc/apache2/sites-available/ 目錄下。

配置範例:

  1. HTTP 虛擬主機配置:將所有 HTTP 請求重定向到 HTTPS。 編輯你的 HTTP 虛擬主機配置檔案(例如:000-default.conf),並添加以下內容:
<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com

    # 將所有請求重定向到 HTTPS
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>

HTTPS 虛擬主機配置:確認 HTTPS 虛擬主機配置正確。 編輯你的 HTTPS 虛擬主機配置檔案(例如:default-ssl.conf),或建立一個新的 HTTPS 虛擬主機,內容如下:

<VirtualHost *:443>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com

    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/yourdomain.com.crt
    SSLCertificateKeyFile /etc/ssl/private/yourdomain.com.key
    # 如果使用中間證書,確保包含該檔案
    # SSLCertificateChainFile /etc/ssl/certs/intermediate.pem

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

步驟 3:啟用站點並重啟 Apache

如果新增或修改了配置檔案,請啟用站點並重新啟動 Apache 服務:

sudo a2ensite default-ssl.conf
sudo systemctl restart apache2

重要注意事項

  • 301 重定向:使用 RewriteRule 時,[L,R=301] 表示永久重定向。測試配置時可以使用 R=302(臨時重定向),確認無誤後再改成 R=301
  • SSL 證書:確保你的 SSL 證書和密鑰配置正確。可以使用 Let’s Encrypt 免費取得證書,也可以使用商業 SSL 證書。
  • 防火牆規則:確認伺服器防火牆允許 HTTPS 流量(端口 443)。

這樣配置後,Apache 就會自動將所有 HTTP 請求重定向到 HTTPS,確保網站安全性。


WordPress Appliance - Powered by TurnKey Linux