2009-07-25 2 views
0

Je me demandais s'il était possible d'exécuter une RewriteRule qui cacherait une version CSS dans une balise link..htaccess pour cacher la version CSS/JS

Ex.

link href="css/global.css?v=1.2.3" rel="stylesheet" type="text/css"

S'affiche comme Ex.

link href="css/global.css" rel="stylesheet" type="text/css"

Je ne peux pas sembler trouver quoi que ce soit sur ce sujet et tout ce que j'ai essayé envoie une erreur 500 :(

Merci!

+4

Le point de ces balises version est d'empêcher la mise en cache des anciens styles/scripts. Pourquoi essayez-vous de l'enlever? –

+2

Il est là parce que c'est comme ça que ça fonctionne. Retirez-le - il n'y a rien pour le faire fonctionner. La seule façon de se débarrasser de la chaîne de version est de ne pas l'utiliser du tout et de revenir aux vérifications régulières de la dernière version modifiée/etag. –

+0

Peut-être que j'aurais dû être plus précis. Le but de ces balises de version n'est pas d'empêcher la mise en cache de la façon dont vous pensez qu'elle est utilisée comme référence pour envoyer une nouvelle demande d'en-tête. – askon

Répondre

4

bien que je ne vois pas le problème d'avoir une version sur l'URL, mais peut-être cela peut vous aider

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^css/(.*)/(.*)\.css$ /css/$2.css?v=$1 [QSA] 

cela vous permet de faire:

<link href="/css/1.2.3/global.css" rel="stylesheet" type="text/css"/> 
+0

Un fichier ne peut pas être un fichier ordinaire et un répertoire en même temps. – Gumbo

+0

@Gumbo tu avais raison, j'ai corrigé le code merci beaucoup! –

5

Non, vous ne pouvez pas faire ça. Vous êtes mal comprendre ce que fait RewriteRule, il ne change pas le code HTML que vous produisez, il change la façon dont les demandes de liens entrants sont traitées

Plus généralement, vous ne pouvez pas supprimer la version des fichiers CSS ou JS sans défaire toute la raison le versioning est là (donc les gens obtiennent automatiquement toute nouvelle version que vous publiez au lieu de r unning votre côté avec vieux, fichiers cassés peut-être cassés).

2

Une telle gestion des versions est souvent utilisée pour créer des URI uniques que le client ne connaissait pas encore. Cela consiste à forcer le client à demander cette ressource au lieu d'utiliser une version mise en cache.

Si vous souhaitez maintenant supprimer ces informations de version, l'URI ne sera plus unique et le client ne peut pas faire une requête mais utiliser une version mise en cache. Mais ce n'est probablement pas ce que vous voulez, sinon vous n'utiliserez pas cette information de version, n'est-ce pas?