我最近在一台新机器上设置了 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 重写代码。
我希望它对你有帮助。