【问题标题】:Redirect to HTTPS while using cache manifest / app cache使用缓存清单/应用缓存时重定向到 HTTPS
【发布时间】:2016-05-31 06:39:45
【问题描述】:

我遇到了一个挑战,将我的网站转换为使用 https 会导致缓存清单出现问题。我在 chrome 中收到如下错误: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://*

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

【问题讨论】:

    标签: .htaccess ssl html5-appcache cache-manifest


    【解决方案1】:

    两个选项;

    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-07
      • 2018-01-26
      • 1970-01-01
      • 2012-10-23
      • 2013-12-29
      • 2019-05-13
      • 1970-01-01
      • 2012-02-20
      相关资源
      最近更新 更多