【问题标题】:htaccess rewrite rule test for http elements requested请求的http元素的htaccess重写规则测试
【发布时间】:2016-02-24 01:21:21
【问题描述】:

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

【问题讨论】:

    标签: .htaccess http https


    【解决方案1】:

    一种常见的方法是使用 RewriteCond 来检查 HTTPS 环境变量是打开还是关闭(on=https,off=http)。例如,这会检查请求是否通过 http 进来,如果是,则返回 403 Forbidden:

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

    这需要启用重写模块。

    已更新(其他示例)

    如果页面本身(引用者)在 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]
    

    【讨论】:

    • 该页面使用 https,但正在加载的图像使用 http。我该如何测试?
    • 您最初的问题是如何“测试”请求是 http 还是 https,但我不确定您想对该测试做什么。我想我现在有了更清晰的画面。如果页面本身是 https,您希望确保对子元素的请求重定向到 https。我用另一个例子更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多