我知道有很多类似的问题,但没有一个解决方案适合我。
我最近使用Let's Encrypt证书将SSL添加到我的网站。我现在正在强制所有流量到https,但我有一个案例,我无法正常工作。
如果用户输入http://www.example.com/page/
,则会将其重定向到https://www.example.compage
。通过从网址库中删除最终/
,可以防止用户直接访问该网页。
但是,http://www.example.com/page
,http://example.com/page/
,http://example.com/page
一切正常。无论是否包含http://
,此行为都是相同的。
我正在根据Apache文档重定向而不是 mod_rewrite
。
这是我的httpd.conf
<VirtualHost *:80>
ServerName http://example.com/
ServerAlias http://www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /path/cert.pem
SSLCertificateKeyFile /path/privkey.pem
</VirtualHost>
在ssl.conf中也设置了相应的SSLxx值,以指向我的证书,密钥和链。
任何帮助都表示赞赏,因为/page/
是用户登录我网站的地方,因此它非常重要且通常会加入书签。
答案 0 :(得分:0)
我在这里找到答案:https://superuser.com/questions/751562/ssl-redirect-in-virtualhost-causing-url-to-break
基本上,您必须重定向到https://www.example.com\/
显然,如果Apache因为某种原因没有被转义,它会尝试剥离最终的斜杠。