我所有人,我在运行 Apache 的 Debian 上重定向到 HTTPS 时遇到了一个奇怪的问题。
- 用户第一次访问http://subdomain.url.nl时,会报找不到页面。
- 当用户改为访问 https 时,它可以工作。
- 然后用户关闭浏览器,再次启动浏览器,然后转到 http(没有 https),重定向突然起作用。
我使用这个重写规则。(*隐藏此帖子中的IP地址)
<VirtualHost 10.*.*.*:80>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
ReWriteRule ^/(.*) https://%{HTTP_POST}/$1 [NC,R,L]
</VirtualHost>
因此,只有“第一次”用户通过 http 访问该站点时,重定向不起作用。知道如何解决这个问题吗?
变量
HTTP_POST
不存在。你最有可能的意思是HTTP_HOST
:由于这是永久重定向,因此应返回响应代码 301,默认
[R]
值为 302(临时移动)。另请注意,不需要对 443 以外的端口进行条件检查,VirtualHost 仅绑定到端口 80。端口 443 上的请求永远不会到达它。
关于第二个工作请求:您是否在 SSL 配置中启用了 HSTS?这可以解释为什么客户端会立即使用 HTTPS 来处理后续请求。
推荐的方法是使用
Redirect
虚拟主机中的选项,如此处所述。这是一个配置片段:这会将所有请求重定向
http://www.example.com
到https://secure.example.com
。