我正在学习网站托管,现在越来越多的 YouTube 资源建议将流量从 HTTP 重定向到 HTTPS。我找到了两种方法可以做到这一点,我想知道哪一种是 2023 年更好/首选的方法。
目前,我正在使用虚拟主机 .conf 文件将 HTTP 流量重定向到 HTTPS,因此目前我对 .htaccess 重定向不感兴趣。
第 2 种将 HTTP 重定向到 HTTPS 的方法是:
<VirtualHost *:80>
ServerName firstsnow.dev
ServerAlias www.firstsnow.dev
DocumentRoot /var/www/first
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Redirect permanent / https://firstsnow.dev/
</VirtualHost>
<VirtualHost *:443>
ServerName firstsnow.dev
ServerAlias www.firstsnow.dev
DocumentRoot /var/www/first
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<If "%{HTTP_HOST} == 'www.firstsnow.dev'">
Redirect permanent / https://firstsnow.dev/
</If>
# https://httpd.apache.org/docs/2.4/expr.html
SSLCertificateFile /etc/letsencrypt/live/firstsnow.dev/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/firstsnow.dev/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
我已经找到了这里。本文的日期为 2020 年 1 月,因此看起来像是最新的知识。
但是当我使用 CertBot 安装 SSL 证书时本教程,我注意到,CertBot 将这 4 行添加到我已有的converse.conf
文件中(如下所示):
<VirtualHost *:80>
ServerName converse.nexus
ServerAlias www.converse.nexus
DocumentRoot /var/www/conv
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =converse.nexus [OR]
RewriteCond %{SERVER_NAME} =www.converse.nexus
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
# https://httpd.apache.org/docs/2.4/expr.html
并创建了一个单独的converse-le-ssl.conf
虚拟主机文件。
这RewriteEngine
与第一种Redirect permanent / https://firstsnow.dev/
方法完全不同。
它不仅看起来和感觉不同,而且还使用%{SERVER_NAME}
环境变量而不是%{HTTP_HOST}
请求标头,我不明白为什么。
您能否阐明这个主题并解释这两种重定向 HTTP 流量的方法之间的区别,并帮助我选择一种更适合我的需求的方法。
我刚刚开始学习 Web 开发、Linux 管理和 apache2 虚拟主机。目前,我正在使用基于名称的虚拟主机运行 3 个非常简单的网站,第 4 个网站即将推出。