我有一个网站(example.com)和一个博客(externalblog.com),它使用ISAPI重写进行外部托管和反向代理。因此,如果您访问www.example.com/blog,您实际上是在externalblog.com上,但URL被屏蔽了。
我已经与许多网站合作,但问题是父网站使用HTTPS,而博客只是HTTP。当访问者尝试关注旧链接时,博客帖子将正常显示在网址的https版本下,但样式表都已损坏,并显示“无证书”警告。
我需要一个能做两件事的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 - 但反向代理网址掩码不再开始了!
答案 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]