将 HTTP 重定向到 HTTPS /etc/apache2/sites-available/default 不起作用

将 HTTP 重定向到 HTTPS /etc/apache2/sites-available/default 不起作用

我知道这个问题已经被提出很久了;然而,我仍然无法找到一个可行的解决方案。

正在使用的操作系统是 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 不知道您使用什么操作系统。

相关内容