将一个目录的 HTTPS 重定向到 HTTP,同时 ISAPI 就地重写

Redirect HTTPS to HTTP for one directory while ISAPI rewrite in place

我有一个站点 (example.com) 和一个博客 (externalblog.com),它们在外部托管并使用 ISAPI 重写进行反向代理。因此,如果您转到 www.example.com/blog,您实际上是在 externalblog.com,但 URL 被屏蔽了。

我已经在许多网站上使用了此功能,但问题是父网站使用 HTTPS,而博客仅使用 HTTP。当访问者尝试访问旧链接时,博客 posts 将在 url 的 https 版本下正常显示,但样式表全部损坏并显示 "no certificate" 警告。

我需要一个可以做两件事的 htaccess 规则:

  1. 仅将尝试访问博客 https 版本 post 的任何人(即 www.example.com/blog 中的任何内容)转发到 http 版本。

  2. 将任何试图访问示例的人转发。com/blog(不带 www)到 http://www.example.com/blog,而不是目前使用的 https 版本。

但是我希望这些规则只影响 www.example。com/blog 而对 example.com 没有其他影响。我目前在 example.com 上重写 ISAPI 的规则如下:

RewriteRule ^blog(.+)$ http://www.externalblog.com [R=301,L]

这可以正常工作,并且基于一篇名为 "using reverse proxying to pull a wordpress blog into your domain" 的在线文章 – 由于没有足够的声誉,我无法在此处添加更多链接。

如有任何帮助,我们将不胜感激。

编辑:我尝试了以下

RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} ^[A-Z]+\s/blog [NC]
RewriteRule ^blog(.+)$ http://www.externalblog.com [R=301,L]

就将 https 重写为 http 而言,此方法有效 – 但反向代理 URL 屏蔽不再起作用。

您的解释比较不清楚,如果我的回答与您无关,我们深表歉意。我想你是想强制 www.example.com/blog 下的所有内容都是 HTTPS,而不是 HTTP?然后试试这个规则:

RewriteEngine On

# HTTP to HTTPS redirect rule
RewriteCond %{HTTPS} off [NC]
RewriteCond %{HTTP:Host} ^www\.example\.com$ [NC]
RewriteRule ^(blog/.*)$ https://www.example.com/ [NC, R=301, L]

# No www. to www. redirect rule
RewriteCond %{HTTP:Host} ^example\.com$ [NC]
RewriteRule ^(blog/.*)$ https://www.example.com/ [NC, R=301, L]

# Your proxy rule goes here, I suppose it looks like:
RewriteRule ^blog(/.*)$ http://www.externalblog.com [NC, P]