我知道这个问题已经被提出很久了;然而,我仍然无法找到一个可行的解决方案。
正在使用的操作系统是 Debian 7 Wheezy。
vHosts 文件(/etc/apache2/sites-available/default):
<VirtualHost *:80>
ServerName www.example.com
ServerAlias *.example.com
RedirectPermanent / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
SSLEngine on
ServerName www.example.com
SSLCertificateFile /etc/apache2/ssl/ev-cert.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.key
SSLCertificateChainFile /etc/apache2/ssl/intermediate.crt
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
DocumentRoot /var/www
<Directory /var/www/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel info
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
编辑(添加问题描述):
重新启动 apache2 后,没有出现任何错误;但是,当我访问http://www.example.com它哪儿也去不了,而且出现服务器连接错误(无法连接到服务器),但是当我访问https://www.example.com我一切顺利。Apache 中没有日志表明发生故障。
答案1
你做错了。你只需要 mod_rewrite。所以基本上首先检查 httpd.conf 中是否启用了此模块
# vi /usr/local/etc/apache24/httpd.conf
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
在要重定向到 https 的文件夹中创建 .htaccess
# touche /usr/local/www/site1/.htaccess
然后添加重定向规则
# echo 'RewriteEngine On' >> /usr/local/www/site1/.htaccess
# echo 'RewriteCond %{HTTPS} off' >> /usr/local/www/site1/.htaccess
# echo 'RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}' >> /usr/local/www/site1/.htaccess
或者您可以将此行添加到您的 vhost.conf 文件中以进行 http 删除永久重定向行并添加
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
保存并重新启动 apache
# apachectl restart
PS 所有路径为 freebsd 不知道您使用什么操作系统。