当前在WordPress安装上安装了W3 Total Cache。整个站点都启用了https://,但是有时缓存会抓取一个来自http://的页面。此缓存的页面包含对也来自http的JS和CSS文件的引用,并且当通过https加载缓存的页面时,这些资源将无法加载。
有人知道如何防止该插件缓存非安全内容吗?
答案 0 :(得分:0)
您不能在W3 Total Cache中禁用http请求的缓存。在 Page Cache |页面缓存中,只能启用/禁用https请求的缓存。一般缓存SSL(https)请求复选框。因此,我想您应该尝试通过其他方式解决此问题。
如果整个安装均配置为使用https,并且HTTP请求是完全不受欢迎的,则将以下行添加到WordPress .htaccess文件中:
# **************************************************************************
# Redirect HTTP to HTTPS
# **************************************************************************
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} ^(.*)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=temporary,L]
上面的代码会将所有HTTP请求重定向到HTTPS协议中的等效请求。这样,WordPress将永远不会产生任何不安全的页面,因此,W3 Total Cache不会将此类页面放入其缓存中。
顺便说一句:在代码中使用“临时”而不是“永久”是有道理的:它的目的是避免在出于任何原因必须返回http请求(过期证书等)-请参见301 Redirects: The Horror That Cannot Be Uncached和How long do browsers cache HTTP 301s?