【发布时间】:2016-02-10 08:11:08
【问题描述】:
我有一个网站 (example.com) 和一个博客 (externalblog.com),它们在外部托管并使用 ISAPI 重写进行反向代理。因此,如果您访问 www.example.com/blog,您实际上是在 externalblog.com 上,但 URL 被屏蔽了。
我已经在许多网站上使用了这个,但问题是父网站使用 HTTPS,而博客只有 HTTP。当访问者尝试访问旧链接时,博客文章将正常显示在 https 版本的 url 下,但样式表全部损坏并显示“无证书”警告。
我需要一个 htaccess 规则来做两件事:
将任何试图仅访问 https 版本的博客文章(即 www.example.com/blog 中的任何内容)的人转发到 http 版本。
将任何试图访问 example.com/blog(不带 www)的人转发到 http://www.example.com/blog,而不是当前使用的 https 版本。
但是,我希望这些规则只影响 www.example.com/blog 而对 example.com 没有其他影响。我目前在 example.com 上重写 ISAPI 的规则如下:
RewriteRule ^blog(.+)$ http://www.externalblog.com$1 [R=301,L]
这可以正常工作,并且基于名为“使用反向代理将 wordpress 博客拉入您的域”的在线文章 – 由于没有足够的声誉,我无法在此处添加更多链接。
任何帮助将不胜感激。
编辑:我尝试了以下
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} ^[A-Z]+\s/blog [NC]
RewriteRule ^blog(.+)$ http://www.externalblog.com$1 [R=301,L]
这可以将 https 重写为 http - 但反向代理 URL 屏蔽不再起作用。
【问题讨论】:
-
我有这个工作,但 IIS 一直无缘无故地暂停。如果我删除 HTTPS 引用并使用 HTTP,它不会暂停,但 Chrome 现在正在将所有 HTTP 转换为 HTTPS,并且在 Chrome 中不起作用。任何想法如何解决 IIS 上的这种暂停?
标签: iis reverse-proxy isapi-rewrite