1

Я пытаюсь создать регулярное выражение в apache, которое соответствует всем файлам с расширениями как .html, .css, .js, .jpg и т. Д. ... кроме этого URL есть слово «NoCache»регулярное выражение для отмены строки nocache не работает

Я прочитал другие записи в StackOverflow, и я создать следующее регулярное expresion

<FilesMatch "^(.*(?!nocache)\.(png|bmp|jpg|gif|html|htm|css|js|ttf|svg|woff|txt))$"> 
    ExpiresActive on 
    ExpiresDefault "now plus 1 month" 
</FilesMatch> 

проблема заключается в том, что это регулярное выражение не работает нормально. Все файлы с расширениями кэшируются, но файл со словом «nocache» также кэшируется.

Кто-нибудь видит, в чем проблема?

ответ

1

Это потому, что вы положили опережение утверждения в неправильном месте

^(?!.*nocache).*\.(png|bmp|jpg|gif|html|htm|css|js|ttf|svg|woff|txt)$ 

Когда вы поместите его перед точкой, она будет выглядеть с этой позиции впереди и все это видит расширение файла, который не является «nocache», так что это правда.

В моем выражении он помещается после якоря и имеет свой собственный .*, поэтому он будет выглядеть с начала строки, если в строке есть «nocache».

+0

Ваше решение отлично работает. Огромный. большое спасибо – user2342974