如何测试请求是否来自http URL(即使https可能已启用)。如果启用了https,我想要提供https页面元素。
答案 0 :(得分:2)
一种常见方法是使用RewriteCond检查HTTPS env var是打开还是关闭(on = https,off = http)。例如,这会检查请求是否通过http传入,如果是,则返回403 Forbidden:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule .* - [F]
这需要启用重写模块。
更新(附加示例)
如果页面本身(referer)位于https:
,则强制所有页面元素为httpsRewriteCond %{HTTPS} !on
RewriteCond %{HTTP_REFERER} ^https:
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
或者如果你知道它只是你需要捕获的图像(文件类型),你可以使RewriteRule更有效,例如:
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_REFERER} ^https:
RewriteRule ^.*\.(gif|png|jpe?g)$ https://%{HTTP_HOST}%{REQUEST_URI} [L]