Amazon EC2-强制将非 www http 和 https 域重定向到 httpd.conf 中的“https://www”域

Amazon EC2-强制将非 www http 和 https 域重定向到 httpd.conf 中的“https://www”域

首先,感谢您花时间回答我的问题。

我正在尝试将所有流量从 http:// 和 https:// 转发到“https://www.[domain].com/[etc]”,目前我能够强制所有“www.”流量到“https://www.”,使用以下 httpd.conf 中的设置:

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://{%SERVER_NAME}%{REQUEST_URI}
</VirtualHost>

不幸的是,此设置不一致。例如,如果我在浏览器地址栏中输入“https://[domain].com”,它不会重定向。在某些浏览器上,“http://[domain].com”也会重定向到非 www 的“https://[domain].com”。

长话短说,我在 httpd.conf 文件中设置从任何域前缀到 Amazon EC2 实例上的“https://www”的正确重定向时遇到了麻烦。如果您能在这里帮助我,我将不胜感激。再次感谢您的时间。

编辑:还有另一个问答介绍了一般重写规则,但是该答案未涵盖一些针对 Amazon EC2 (ELB) 的特定规则。坦率地说,我不确定 Amazon EC2 细节是否适用于我的问题,但我拥有的代码 (x-forwarded-proto) 特定于 ELB。

不管怎样,我之所以问这个问题是因为我的所有资源都已经用尽了。如果我在其他地方找到(或找到)答案,我会很乐意用信息和链接更新我的问题。

编辑2: 以下代码从 [domain].com、http://[domain.com] 和 http://www.[domain].com 重定向到 https://www.[domain].com。不幸的是,https://[domain].com 仍然没有重定向。

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://{%SERVER_NAME}%{REQUEST_URI}

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

我是否需要为 https:// 域名重定向设置不同的 VirtualHost?

答案1

这将启用重写功能:

RewriteEngine On

这将检查以确保连接还不是 HTTPS:

RewriteCond %{HTTPS} !=on

此规则将把用户从其原始位置重定向到相同的位置:

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

前导斜杠是可选的,以便它可以在 httpd.conf 位置工作但使用 HTTPS。

相关内容