使用 mod_rewrite 强制 HTTPS,包括代理 SSL

Yar*_*rin 9 mod-rewrite apache-2.2

我有一台服务器从 SSL 终止负载平衡器获取一些流量 - 在这种情况下,它作为 HTTP 通过端口 80 传入,带有http_x_forwarded_proto= "https"

我想要一个只允许直接 HTTPS 流量或转发 HTTPS 流量的 mod_rewrite 规则。

到目前为止我有这个:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:http_x_forwarded_proto} != https
RewriteCond %{HTTP:http_x_forwarded_proto} != HTTPS
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)

但我得到

RewriteCond:错误的标志分隔符

错误。

我需要纠正什么才能使其正常工作,这是最好的方法吗?

Yar*_*rin 16

问题是“!=”后面的空格:

工作版本:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)

棘手...