htacces目标特定文件

时间:2018-12-23 10:48:46

标签: regex apache .htaccess caching service-worker

这应该很简单,但显然不是。

我正试图避免将服务工作者文件缓存在Apache服务器上。

文件为sw.js,并按应放置在/public_html/上。

我尝试了以下<FilesMatch ??? >的几种组合,例如"sw\.js$",但没有成功。

<FilesMatch "^(sw\.js)$">
  FileETag None
  <ifModule mod_headers.c>
    Header unset ETag
    Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires "Wed, 08 Jan 1975 05:00:00 GMT"
  </ifModule>
</FilesMatch>

根据to this,如果我运行

 `curl -I -L https://www.soeezauto.com/sw.js | grep cache-control` 

我应该收到cache-control: no-cache,但我没有。

1 个答案:

答案 0 :(得分:2)

您在FilesMatch指令内的正则表达式似乎正确。但是请注意,Apache将发送以下标头作为响应:

Cache-Control: max-age=0, no-cache, no-store, must-revalidate

Cache-Control处注意混合大小写标题的名称。

您的grep命令正在搜索所有小写的标头名称,即cache-control,因此没有显示输出。

您需要在-i中使用grep(忽略大小写)匹配,或搜索完全相同的标头,即Cache-Control

因此,以下任何grep都可以使用:

grep -i 'cache-control'

grep 'Cache-Control'

为了获得更高的效率,请为固定字符串搜索添加-F选项,因为您没有使用grep模式中的任何正则表达式来实现它:

grep -iF 'cache-control'