我有htaccess重写规则:
RewriteCond %{HTTP_HOST}: ^(?:www\.)?samplesite\.net
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
在运行IIS的两个azure vm上。 我有一个位于前面的应用程序网关,它有一个后端Https池,带有两个azure vms的服务器证书。
我在网关上有一个多站点https监听器,它使用特定的URI www.samplesite.net监听到网关的https流量。 有一个使用backendHttps池的附加规则。
虚拟机托管多个站点,我只想将HTTP重定向到这个站点的HTTPS。我在Azure网关上为监听器提供了www.samplesite.net的私钥。
如果我直接指向任何VM,我已成功重定向到HTTPS。如果我指向网关,我收到的重定向错误太多了。
如果我不在服务器上重写,我可以通过网关直接转到HTTPS或HTTP而没有问题。
如果我有端到端加密,为什么要获得此重定向?
编辑: 关于使用gateway rules重定向流量:
规则按列出的顺序处理,流量为 指导使用匹配的第一条规则,无论特异性如何。 例如,如果您有使用基本侦听器和规则的规则 在同一个端口上使用多站点侦听器,规则与 必须在具有基本规则的规则之前列出多站点侦听器 侦听器,以使多站点规则按预期运行。
EDIT2: 如果有人有兴趣,我必须这样做:
RewriteCond %{HTTP_HOST}: ^(?:www\.)?samplesite\.net
RewriteCond %{HTTP_X_FORWARDED_PROTO} ^http$
RewriteRule ^(.*)$ https://www.samplesite.net%{REQUEST_URI} [L,R=302]
答案 0 :(得分:0)
我必须检查从网关转发的标头
> RewriteCond %{HTTP_HOST}: ^(?:www\.)?samplesite\.net
> RewriteCond %{HTTP_X_FORWARDED_PROTO} ^http$
> RewriteRule ^(.*)$ https://www.samplesite.net%{REQUEST_URI} [L,R=302]
https://www.helicontech.com/isapi_rewrite/doc/examples.htm https://stackoverflow.com/a/41512717/7889282
https://sitecoreblog.marklowe.ch/2017/01/using-ip-geolocation-and-ssl-on-azure/