以下是我当前的配置:
<VirtualHost *:443>
DocumentRoot "/var/www/keypad"
ServerName keypad.io
SSLOptions +StrictRequire
<Directory />
SSLRequireSSL
</Directory>
SSLProtocol -all +TLSv1
SSLEngine on
SSLCertificateFile /cert/cert.crt
SSLCertificateKeyFile /cert/key.key
SSLCACertificateFile /cert/inter.crt
</VirtualHost>
<VirtualHost *:80>
ServerName keypad.io
ServerAlias www.keypad.io
DocumentRoot /var/www/keypad
Redirect permanent / https://keypad.io/
</VirtualHost>
这样就可以通过 http:// 和 https:// 访问该网站
由于某种原因,我最终遇到了无限重定向循环,地址栏中显示 https://。
如果我完全删除 *:80 Host,http:// 将停止工作,https:// 将忽略该DocumentRoot
属性并返回 apache 欢迎页面。无论我在 *:443 host 块中执行什么操作,我都会获得与欢迎页面的加密连接。
我希望 http:// 和 https:// 都能将客户端定向到我的网站的 SSL 加密版本。我的 apache2.conf 是默认的。我还没有对它做任何事情。
输出apache -version
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jul 22 2014 14:36:38
有什么想法吗?
编辑:我添加了额外的“/”(并按照建议删除了 SSLv3),但仍然有无限的重定向循环。任何帮助都非常感谢。
答案1
您的指令中缺少一个斜线Redirect
:
<VirtualHost *:443>
DocumentRoot "/var/www/keypad"
ServerName keypad.io
SSLOptions +StrictRequire
<Directory />
SSLRequireSSL
</Directory>
SSLProtocol -all +TLSv1 +SSLv3
SSLEngine on
SSLCertificateFile /cert/cert.crt
SSLCertificateKeyFile /cert/key.key
SSLCACertificateFile /cert/inter.crt
</VirtualHost>
<VirtualHost *:80>
ServerName keypad.io
ServerAlias www.keypad.io
DocumentRoot /var/www/keypad
Redirect permanent / https://keypad.io/
</VirtualHost>
没有斜线请求:
curl -v http://keypad.io/bla
将会把您重定向到该https://keypad.iobla
位置。