Добавить заголовок expires для всех файлов, кроме определенных файлов

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

# BEGIN LBCWpFastestCache
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|webp|js|css|swf|x-html|css|xml|js|woff|woff2|ttf|svg|eot)(\.gz)?$">
<IfModule mod_expires.c>
AddType application/font-woff2 .woff2
ExpiresActive On
ExpiresDefault A0
ExpiresByType image/webp A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/ico A2592000
ExpiresByType image/svg+xml A2592000
ExpiresByType text/css A2592000
ExpiresByType text/javascript A2592000
ExpiresByType application/javascript A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType application/font-woff2 A2592000
</IfModule>
<IfModule mod_headers.c>
Header set Expires "max-age=2592000, public"
Header unset ETag
Header set Connection keep-alive
FileETag None
</IfModule>
</FilesMatch>
# END LBCWpFastestCache

Я хочу сделать исключение для двух разных изображений на своей странице. Пусть их имена будут file-a и file-b, вот что я пробовал:

Я поставил этот код после кода из плагина.

<FilesMatch "\.(file-a|file-b)$">
ExpiresDefault "access plus 1 hour"
</FilesMatch>

Поскольку это не сработало, я также попытался поставить его перед кодом, который тоже не сработал.

Затем я попытался изменить FilesMatch часть кода, добавленную плагином, чтобы исключить мои файлы.

<FilesMatch "(?!.*/(file-a|file-b))(\.(ico|pdf|flv|jpg|jpeg|png|gif|webp|js|css|swf|x-html|css|xml|js|woff|woff2|ttf|svg|eot)(\.gz)?$)">

Тоже не сработало.

Как мне этого добиться?


person TheKidsWantDjent    schedule 08.07.2018    source источник


Ответы (2)


Недостаточно указать имена запрещенных файлов, поскольку следующая группа захвата может совпадать с разрешенными расширениями файлов. У вас должна быть возможность решить эту проблему с помощью умеренного жадного токена:

^((?!\/file-a|file-b).)*(\.(ico|pdf|flv|jpg|jpeg|png|gif|webp|js|css|swf|x-html|css|xml|js|woff|woff2|ttf|svg|eot)(\.gz)?$)

Демонстрация

person wp78de    schedule 08.07.2018

Вы можете использовать поиск по регулярному выражению с отрицательным ретроспективным просмотром.
Посетите эту площадку regex101

<FilesMatch "(?<!file-a|file-b)(\.(ico|pdf|flv|jpg|jpeg|png|gif|webp|js|css|swf|x-html|css|xml|js|woff|woff2|ttf|svg|eot)(\.gz)?$)">
person Jun711    schedule 20.03.2019