使用htaccess强制所有嵌入式链接的ssl来处理不安全的内容

时间:2013-08-14 20:24:50

标签: .htaccess ssl

我正在尝试在文件夹(博客管理员)上强制执行SSL。这部分很好 - 所有页面都是SSL,但该网站正在为页面上的不安全内容生成错误消息。我可以单独查看所有这些链接,以在链接上强制执行SSL。 我想知道是否可以通过htaccess单独完成吗? 这是我在管理文件夹上执行SSL强制执行的操作:

#forcing https for admin folder
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} admin
RewriteRule ^(.*)$ https://mysite.com/blog/admin/$1 [R,L]

如何在同一页面上将所有非ssl链接转换为ssl?

另外:

1)我正在使用带有不同插件的wordpress 3.6。只有管​​理区域是SSL,其余部分除了登录页面(在管理员之外也是SSL)之外是非SSL(例如最终用户的博客供稿)。

2)一些不安全的内容来自我自己的网站,但是还有一些内容来自我正在使用的插件。例如disqus评论系统和flickr。

3)我可以通过在wordpress上使用'setting for permalink'来强制显示图像,css和jscript的内部链接(注意到url是以http而不是https提供的)。同样,我可以找到并修复其他链接,如下所示:

  

https://mysite.com/blog/wp-login.php处的页面内容不安全   从   http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js?ver=3.6

4)问题是:

  • 如果我使用固定链接设置,则博客链接将创建为https 而不是http,这打破了我用于非的插件 SSL页面,例如disqus评论Feed不会显示在博客上 页。其次,修复所有非ssl链接的痛苦过程。 此外,我总是可以错过其中一些,因为我正在这样做 手动。如果我可以为所有人强制执行SSL,那将非常有用 这些非SSL链接使用htaccess,也许是唯一简单的解决方案。

1 个答案:

答案 0 :(得分:0)

重写规则(实际上是重定向,当它涉及HTTP到HTTPS时)无济于事,因为当初始的普通HTTP请求到达服务器时,为时已晚。

这是您所服务的页面上必须解决的链接。这通常取决于在服务器上运行的应用程序(例如,您的PHP / CGI应用程序),而不是服务器本身。服务器需要能够处理它发送的响应内容以替换这些链接,而不仅仅是重定向请求(如mod_rewrite那样)。

mod_proxy_html(与Apache 2.4一起发布或在早期版本中单独发布)是一个可以深入处理响应的模块,但我不确定它是否可以用作后处理工具对于在同一服务器上运行的PHP,重写它发送的链接。 当然,这不会修复到https://无法提供的外部资源的链接。