2014-11-30 4 views
1

Чтобы помочь контролировать кеширование на нашем сайте, я хочу назвать некоторые файлы ресурсов (css & js) с номером версии в своем URL-адресе (например, site.v104.css) что позволит нам делать обновления пользователям, когда захочет, но сокращать обслуживание и переименовывать фактический файл каждый раз, когда я хочу настроить правило .htaccess, которое автоматически переписывает эти URL-адреса из браузера и представляет контент из его фактического местоположения ,RegEx, чтобы удалить часть имени файла

Если файл находится в папке css и заканчивается на .vNNN.css, тогда я хочу загрузить содержимое из .vNNN, например, если файл в HTML-сайте сайта: «site_media/css/site.v104.css ", то я хочу, чтобы он загружал контент с сайта" site_media/css/site.css ", и для этого работает правило ниже.

В моем файле .htaccess я добавил следующую строку:

RewriteRule ^(site_media/css/.*).v\d+(\.css)  /$1$2   [U,L] 

Однако, если у меня есть файл с кратным «» (например, «site_media/css/site.prod.v104.css»), то он не работает, он возвращает «site_media/css/site.css» вместо «site_media/css/site.prod.css».

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

ответ

1

Исправлено - обнаружено, что ошибка с lookahead заставляла ее не работать (и эта половина моей проблемы была тестом регулярного выражения, который я использовал). Приведенный выше код работает.

Смежные вопросы