【发布时间】:2017-08-08 14:05:42
【问题描述】:
由于特定页面上的 iframe 从 http:// 域中提取内容,因此存在冲突问题,因为我的网站是 https://。
如何让 htaccess 在特定页面上恢复为 http,例如:https://www.example.com/about 被重定向到 http://www.example.com/about
任何帮助将不胜感激。
【问题讨论】:
由于特定页面上的 iframe 从 http:// 域中提取内容,因此存在冲突问题,因为我的网站是 https://。
如何让 htaccess 在特定页面上恢复为 http,例如:https://www.example.com/about 被重定向到 http://www.example.com/about
任何帮助将不胜感激。
【问题讨论】:
我假设您说冲突是由于浏览器警告造成的。但最后,http降级也会产生警告。您最好的做法是:通过 https 加载框架内容(如果可用),或在新选项卡或窗口中打开框架内容。由于点击劫持和 XSS 漏洞利用,iframe 在当今世界中不受欢迎,并且即将对浏览器进行一些更改,这将使其非常难以做到(您将需要另一个域来允许您在您的域上构建它们的内容或浏览器不会加载它),所以最好现在就离开它。
【讨论】:
您可以使用以下规则来做到这一点:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{REQUEST_URI} !^\/(about)
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{HTTP:X-Forwarded-SSL} =on
RewriteCond %{REQUEST_URI} ^\/(about)
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]
它的作用是首先检查 HTTPs 是否未打开,如果未打开,则它将所有内容转发到 HTTPs,但目录 about 除外。第二条规则检查 HTTPs 是否开启,如果开启则将 about 重定向回 HTTP。
确保在测试之前清除缓存。
【讨论】: