0

我正在尝试对文件夹(博客管理员)强制执行 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 上使用“设置永久链接”来强制图像、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 链接的痛苦过程。此外,我总是会错过其中的一些,因为我是手动操作的。如果我可以使用 htaccess 对所有这些非 SSL 链接强制执行 SSL,这将非常有帮助,这可能是唯一简单的解决方案。
4

1 回答 1

0

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

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

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

于 2013-11-01T19:42:25.983 回答