我为我的虚拟主机进行了以下设置:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{HTTPS} Off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>
http://www.example.com
如果我访问或 ,则此方法可正常工作http://example.com
。但是,如果我访问特定的 URL(例如),http://www.example.com/docs/
它不会重定向到 HTTPS,并将保持非安全连接。为什么会发生这种情况?
答案1
而不是试图解决什么是错的,RewriteRule
这是一个典型的何时不使用 mod_rewrite:
要将 http URL 重定向到 https,请执行以下操作:
<VirtualHost *:80> ServerName www.example.com Redirect "/" "https://www.example.com/" </VirtualHost>
只需添加ServerAlias
。最好重定向到典范姓名。