Apache重定向到https而没有mod_rewrite不保留URL

时间:2016-12-12 04:03:27

标签: apache redirect ssl

我知道有很多类似的问题,但没有一个解决方案适合我。

我最近使用Let's Encrypt证书将SSL添加到我的网站。我现在正在强制所有流量到https,但我有一个案例,我无法正常工作。

如果用户输入http://www.example.com/page/,则会将其重定向到https://www.example.compage。通过从网址库中删除最终/,可以防止用户直接访问该网页。

但是,http://www.example.com/pagehttp://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/是用户登录我网站的地方,因此它非常重要且通常会加入书签。

1 个答案:

答案 0 :(得分:0)

我在这里找到答案:https://superuser.com/questions/751562/ssl-redirect-in-virtualhost-causing-url-to-break

基本上,您必须重定向到https://www.example.com\/

显然,如果Apache因为某种原因没有被转义,它会尝试剥离最终的斜杠。