如何找到 http 到 https 重定向循环的原因?

如何找到 http 到 https 重定向循环的原因?

我最近在一台新机器上设置了 owncloud(Apache/2.4.10 Debian)。这是在我通过 Let's Encrypt 获得 SSL 证书之前。我一直试图将 http 强制转换为 https,但总是以重定向循环告终。我在 google 上搜索并尝试添加:

Redirect permanent / https://www.example.com

这并没有解决问题。

我的当前配置如下:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName www.example.com

        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:443>
        ServerName www.example.com
        DocumentRoot /var/www/owncloud

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

这也给了我一个重定向循环。

此外,如果我只保留*:80虚拟主机并删除重写部分,我就可以同时访问两者http,而https不会出现任何问题。所以我已经成功了。

请求的附加信息部分

apachectl -S输出:

VirtualHost configuration:
*:80                   www.example.com (/etc/apache2/sites-enabled/ssl-owncloud.conf:1)
*:443                  www.example.com (/etc/apache2/sites-enabled/ssl-owncloud.conf:14)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

答案1

报告的配置没有问题。是否有可能隐藏了其他虚拟主机定义?

您想确认一下:

sudo apache2ctl -t -DDUMP_VHOSTS

那么?合理的输出是:

VirtualHost configuration:
*:80                   www.example.org (/etc/apache2/sites-enabled/000-default.conf:1)
*:443                  www.example.org (/etc/apache2/sites-enabled/default-ssl.conf:4)

(其中:1 和:4 是定义 vhost 的行号)。

答案2

检查您的 owncloud 配置 ( /var/www/owncloud/config/config.php),查找'forcessl' => true,,并将其放入false。这是 owncloud 选项,用于将 http 重定向到 https 流量,无需任何 apache 重写代码。

我希望它对你有帮助。

相关内容