Добавьте заголовки Expires для указанных c файлов в файле .htaccess - PullRequest
1 голос
/ 13 марта 2020

Я пытаюсь добавить правила кэширования браузера в мой файл .htaccess с другими правилами истечения срока действия для файлов в определенном каталоге. Общие правила применяются ОК, но каталоги c не соответствуют правилам.

Это раздел в моем файле .htaccess (правило FilesMatch предназначено для каталога):

<IfModule mod_expires.c>
  ExpiresActive On

  # Images
  ExpiresByType image/jpeg "access plus 1 day"
  ExpiresByType image/gif "access plus 1 day"
  ExpiresByType image/png "access plus 1 day"
  ExpiresByType image/webp "access plus 1 day"
  ExpiresByType image/svg+xml "access plus 1 day"
  ExpiresByType image/x-icon "access plus 1 day"

  # CSS, JavaScript
  <FilesMatch "^(assets/foundation/5.5.3)$">
    ExpiresByType text/css "access plus 1 year"
    ExpiresByType text/javascript "access plus 1 year"
    ExpiresByType application/javascript "access plus 1 year"
  </FilesMatch>
  ExpiresByType text/css "access plus 1 day"
  ExpiresByType text/javascript "access plus 1 day"
  ExpiresByType application/javascript "access plus 1 day"

  # Others
  ExpiresByType application/pdf "access plus 1 day"
</IfModule>

Это файлы, на которые я нацеливаюсь:

https://cm.anyware.co.nz/assets/foundation/5.5.3/css/normalize.css
https://cm.anyware.co.nz/assets/foundation/5.5.3/css/foundation.min.css
https://cm.anyware.co.nz/assets/foundation/5.5.3/js/vendor/modernizr.js
https://cm.anyware.co.nz/assets/foundation/5.5.3/js/vendor/jquery.js
https://cm.anyware.co.nz/assets/foundation/5.5.3/js/foundation.min.js
https://cm.anyware.co.nz/assets/foundation/5.5.3/js/foundation.dropdown.js
https://cm.anyware.co.nz/assets/foundation/5.5.3/js/foundation.topbar.js

GTMetrix сообщает, что у этих компонентов c нет срока годности в далеком будущем.

Что я делаю не так, пожалуйста?

1 Ответ

0 голосов
/ 13 марта 2020
<FilesMatch "^(assets/foundation/5.5.3)$">

Директива <FilesMatch><Files>) соответствует только имени файла, например, normalize.css, foundation.min.css, et c. это не то, что вам нужно.

Самый простой способ нацелиться только на этот указанный каталог c - создать в этом каталоге другой файл .htaccess с необходимыми переопределениями.

В качестве альтернативы вы можно использовать выражение Apache в Apache 2.4+ и сверять с REQUEST_URI, хотя это не обязательно совпадает с каталогом (в зависимости от вашей системы).

Например:

<If "%{REQUEST_URI} =~ m#^/assets/foundation/5\.5\.3/#">
    ExpiresByType text/css "access plus 1 year"
    ExpiresByType text/javascript "access plus 1 year"
    ExpiresByType application/javascript "access plus 1 year"
</If>
...