使用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) 我正在使用wordpress3.6和它附带的不同插件。只有管理区域是SSL,除了登录页面(管理之外也是SSL)之外的其他部分都是非SSL的(例如最终用户的博客订阅源)。

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

3) 我可以通过在wordpress上使用"settingforpermalink"来强制图像、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评论源不会显示在博客上页其次,修复所有非ssl链接的痛苦过程。此外,我总是会错过其中的一些,因为我正在做这件事手动。如果我能为所有人强制执行SSL,那将非常有帮助这些非SSL链接使用htaccess,也许是唯一简单的解决方案

重写规则(当涉及HTTP到HTTPS时,实际上是重定向)没有帮助,因为当最初的纯HTTP请求到达服务器时,已经太晚了。

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

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

最新更新