Selon Apache FilesMatch docs:
La directive FilesMatch permet le contrôle d'accès par nom de fichier.
Fondamentalement, je veux uniquement définir un en-tête Expires pour les ressources ayant un identifiant de "cache buster" à 10 chiffres ajouté au nom. Donc, voici ma tentative d'une telle chose dans mon httpd.conf
<FilesMatch "(jpg|jpeg|png|gif|js|css)\?\d{10}$">
ExpiresActive On
ExpiresDefault "now plus 5 minutes"
</FilesMatch>
Et voici un exemple de ressource que je veux associer:
http://localhost:3000/images/of/elvis/eating-a-bacon-sandwich.png?1306277384
Maintenant, évidemment, mon expression rationnelle FilesMatch ne correspond pas, alors je devine qu’une chose sur 2 se passe. Soit mon expression rationnelle est wonky, soit la partie du fichier contournant le cache '? 1231231231' ne fait pas partie de ce que Apache considère comme faisant partie du nom de fichier. Quelqu'un peut-il confirmer et/ou me donner un moyen de ne mettre en cache que les ressources qui ne persisteront pas après le prochain déploiement?
A réussi un test simple et je pense avoir la réponse.
Nom de la ressource: http: // localhost: 3000/stylesheets/baseline.css? 1309365344
Premier test - Echec - Le fichier baseline.css n'a pas été mis en cache.
<FilesMatch "baseline.css\?1309365344">
ExpiresActive On
ExpiresDefault "now plus 1 week"
</FilesMatch>
Deuxième test - Réussite - Ceci a mis en cache le fichier baseline.css.
<FilesMatch "baseline.css">
ExpiresActive On
ExpiresDefault "now plus 1 week"
</FilesMatch>
Conclusion : Quand Apache dit "La directive FilesMatch fournit un contrôle d'accès par nom de fichier", elle n'inclut rien après l'extension dans le nom du fichier.
Cependant, je dois encore trouver un moyen d'appliquer uniquement ExpiresDefault aux ressources dont l'horodatage est défini sur le chemin d'accès aux ressources. Je vais mettre cela dans ne autre question .
Je viens de lutter avec un problème de htaccess avec un? dans l'URL. Le ? ne fait pas techniquement partie du nom de fichier, mais une chaîne de requête. Je ne serais pas surpris si cela ne soit pas passé à FilesMatch.
La chose que j'ai utilisée était
RewriteCond %{QUERY_STRING} ^something$
Évidemment, vous ne faites pas de réécriture, mais vous pouvez essayer de piéger le %{QUERY_STRING}
.