簡體   English   中英

如何使用 VirtualHost 將 http://example.com 重定向到 apache2.conf 中的 https://example.com

[英]How to redirect http://example.com to https://example.com in apache2.conf using VirtualHost

我正在嘗試將 http URL 重定向到 https,並將 www URL 重定向到非 www。 我正在使用在 Raspberry Pi 3 型號 B+ 中運行的最新版本的 Apache 2 http 服務器。

我想在 apache2.conf 中使用 VirtualHosts,因為我在很多地方讀到這種方法是首選而不是使用 .htaccess

我得到 3 個重定向以正常工作:

http://www.example.com轉到https://example.com

https://example.com轉到https://example.com

https://www.example.com轉到https://example.com

但是http://example.com轉到http://example.com

換句話說,非 www 不安全 (http) 站點不會被重定向到安全 (https) 站點......而且我無法加載我的 SSL 證書。

我使用 CNAME 將 www 站點重定向到非 www 站點。

http 使用 Redirect 指令訪問 https。

這是我的 apache2.conf 文件的相關部分:

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect / https://example.com/
</VirtualHost>

<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
Protocols h2 http/1.1
ErrorLog logs/error_log
SSLEngine on
SSLCertificateFile /etc/ssl/example.com.crt
SSLCertificateKeyFile /etc/ssl/example_com_key.txt
SSLCertificateChainFile /etc/ssl/example.com.ca-bundle
SSLUseStapling on
</VirtualHost> 

SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

如果您已完成每個域 conf 文件的 CERTBOT,這會將您的所有 www 網站重定向到非 www 並保護它們。 把它放在目錄 /www 部分的 /etc/apache2/apache2.conf 中:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

插入此代碼后,無需 CERTBOT www 域。 只需選擇 domain.com 即可。 您不需要 htaccess 文件。 它們可以通過 AllowOverride None 選項進行限制。

記得重啟apache。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM