强制 SSL 不适用于 Joomla 或 htaccess

强制 SSL 不适用于 Joomla 或 htaccess

我们在 Joomla 中有多个网站。以下是详细信息。

  • 托管于域名 mydomain.co.in、sub.mydomain.co.in。
  • 位于负载均衡器后面的 Amazon EC2 实例。
  • 我们已经为 *.mydomain.co.in 购买了 WildCard SSL 证书并在负载均衡器上对其进行了配置。

我已将 Joomla 配置中的 Live Site 变量设置为https://sub.mydomain.co.in. 当我使用https://sub.mydomain.co.in或者http://sub.mydomain.com,它工作正常。但我想强制所有请求都转到 https://。

我试图通过以下方式实现此目标

  • 在 Joomla 配置中将强制 SSL 变量设置为整个站点。
  • 在 .htaccess 中添加以下代码

RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

但什么都不起作用,当我做这两个浏览器中的任何一个时都说此页面有重定向循环。我进一步挖掘了一下,看看是否有从其他地方发生的重定向。

  • httpd.conf 中的虚拟主机配置
  • 任何 Joomla 重定向插件。

但是没有导致重定向循环的代码/插件。

有人可以帮忙吗?

提前致谢。

答案1

您在重写条件中检查了错误的变量。

由于您使用 Amazon Elastic Load Balancer 终止您的 SSL 会话,因此您实例中的 Apache 不知道它们是通过 HTTPS 进入的,并且不会设置 HTTPS。

ELB 设置 X-Forwarded-Proto 标头或取决于请求的接收方式。您可以检查此标httphttps,以实现重定向。

RewriteEngine on 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

相关内容