请求http元素的htaccess重写规则测试

时间:2016-02-24 01:21:21

标签: .htaccess http https

如何测试请求是否来自http URL(即使https可能已启用)。如果启用了https,我想要提供https页面元素。

1 个答案:

答案 0 :(得分:2)

一种常见方法是使用RewriteCond检查HTTPS env var是打开还是关闭(on = https,off = http)。例如,这会检查请求是否通过http传入,如果是,则返回403 Forbidden:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule .* - [F]

这需要启用重写模块。

更新(附加示例)

如果页面本身(referer)位于https:

,则强制所有页面元素为https
RewriteCond %{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]