在ISAPI重写就位时将HTTPS重定向到一个目录

时间:2016-02-10 08:11:08

标签: iis reverse-proxy isapi-rewrite

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

我已经与许多网站合作,但问题是父网站使用HTTPS,而博客只是HTTP。当访问者尝试关注旧链接时,博客帖子将正常显示在网址的https版本下,但样式表都已损坏,并显示“无证书”警告。

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

  1. 将试图访问https版博客文章的任何人(即www.example.com/blog中的任何内容)转发给http版本。

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

  3. 但是,我希望这些规则只影响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 - 但反向代理网址掩码不再开始了!

1 个答案:

答案 0 :(得分:2)

你的解释相当不清楚,如果我的回答不相关,那就很抱歉。我想你试图强迫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/$1 [NC, R=301, L]

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

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