【问题标题】:Isapi Rewrite - preserving HTTPS in redirects behind load balancerIsapi Rewrite - 在负载均衡器后面的重定向中保留 HTTPS
【发布时间】:2010-11-10 22:54:37
【问题描述】:

我正在运行一个具有 2 个独立子域的站点 - 一个用于 HTTP,另一个用于 HTTPS。

  • http://www.example.com
  • https://secure.example.com

http://secure.example.com 不存在且不会解析。

问题是该站点在处理所有 SSL 的负载平衡器后面运行。负载平衡器和 Web 服务器之间的通信始终采用 HTTP。

所以,当使用 Isapi Rewrite 3(IIS 的 mod_rewrite 克隆)来实现一些重定向时,我遇到了问题。

就 Isapi Rewrite 而言,HTTPS 已关闭 - 因此secure.example.com 上的重定向失败。

假设我有一条规则:

RewriteRule ^/example/$ /test/ [R=301,L]

如果我向 https://secure.example.com/example/ 发出请求,我希望以 https://secure.example.com/test/ 结束,但由于 Isapi Rewrite 将 HTTPS 视为关闭,我最终以http://secure.example.com/test/

如果域是secure.example.com,有什么方法可以强制重定向到 HTTPS?

类似这样的事情:

RewriteCond %{SERVER_NAME} secure.example.com
RewriteRule ^/(.*)$ https://secure.example.com/$1

除非这不起作用 - 它会立即强制执行显式重定向,而我想继续处理其他 RewriteRules

谢谢,

学习

【问题讨论】:

    标签: mod-rewrite redirect https isapi-rewrite load-balancing


    【解决方案1】:

    这样的事情怎么样:

    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^secure\.mydomain\.com$ [NC]
    RewriteRule ^/example/$ https://secure.mydomain.com/test/ [R=301,L]
    

    【讨论】:

    • 谢谢伙计 - 这确实有效!我希望有一种方法可以一次运行该域检查,而不是在每个规则之前运行 - 否则我的 .htaccess 文件会变得非常臃肿!也许是希望太高了……
    • 如果你把这些规则放到secure.example.com根目录下的.htaccess中,你完全可以省略主机检查。
    • 我听到了 - 不幸的是,我目前只能在安全域和 www 域上使用相同的 .htaccess 文件。将此标记为答案 - 感谢您的帮助!
    猜你喜欢
    • 2017-07-07
    • 2018-12-04
    • 2023-04-01
    • 2012-03-24
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 2014-03-08
    • 2015-04-29
    相关资源
    最近更新 更多