使用缓存清单/应用缓存时重定向到 HTTPS



>我遇到了一个挑战,将我的网站转换为使用 https 会导致缓存清单出现问题。 我在铬中收到错误,如下所示:Application Cache Error event: Manifest fetch failed(4) http://www.bibletools.info/cache.manifest

在 Safari 中,我收到重定向循环错误。

这是我用来重定向它的htaccess代码:

RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

这是我的缓存清单的样子:

CACHE MANIFEST
# February 18, 2016 v1
CACHE:
/
/assets/app.min.css?v=1.4
https://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic
https://fonts.googleapis.com/css?family=Raleway:400,300,700
https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js
https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css
/assets/app.min.js?v=1.3
NETWORK:
*
HTTP://*

我知道清除浏览器缓存通常似乎可以解决问题,但我的用户不知道该解决方案。 我该怎么做才能将它们转换为安全服务器?

两个选项;

  1. 更改清单文件的名称(称为 manifest.appcache 或其他名称)。这样,旧的缓存页面在尝试访问 cache.manifest 文件时将收到 404 错误。404 表示浏览器将完全删除缓存(如此处),然后重新启动;http://www.html5rocks.com/en/tutorials/appcache/beginner/

  2. 将重写规则更改为以下内容;

    RewriteRule ^((?!cache.manifest).)*$ https://%{SERVER_NAME}/$1 [R,L]
    

    这将允许流向清单的 HTTP 流量,以便旧缓存可以自行更新。

    您还需要对清单文件进行少量更改,以便旧缓存下载所有文件的新版本。这可能只是在清单中添加注释或递增版本号。

如果您不关心人们当前缓存了什么,只想在 HTTPS 上重新开始,则可以使用选项 1。如果您不想更改缓存的名称,并且不希望用户必须重新下载所有缓存文件,则可以使用选项 2。

最新更新