Conditions mutltiples pour un htaccess

Nouveau WRInaute
J'avais jusqu'a aujourd'hui un htaccess simplissime pour gerer les url de mon framework "fait maison" :
Code:
<Files .htaccess>
order allow,deny
deny from all
</Files>

Options -Indexes

ErrorDocument 400 /errors/400
ErrorDocument 403 /errors/403
ErrorDocument 404 /errors/404
ErrorDocument 500 /errors/500

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# règle 1
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Je cherche à ajouter cette regle :
Code:
# règle 2
RewriteRule ^javascript/(.*\.js) combine.php?type=javascript&files=$1
qui me sert en fait à rediriger toutes les demandes de fichier .js vers un fichier php, qui va leur appliquer un traitement et renvoyer le fichier qui va bien.

seulement, cela rentre en conflit avec ma condition "RewriteCond %{REQUEST_FILENAME} !-f", puisque les regles ne sont appliquées que si on ne demande pas un fichier, hors la regle pour les .js s'applique justement si on demande un fichier !

Pour résumer, je veux que si ce n'est pas un fichier, si ce n'est pas un directory, on applique la règle 1, et, cas particulier, si c'est un fichier du type javascript/nom_du_fichier_js.js, on applique la règle 2.

des idées? je bloque total...
 
WRInaute accro
Sauf erreur de ma part, les RewriteCond ne s'appliquent qu'à la seule RewriteRule qui suit.

Dans ton cas, les fichiers JS existent avec leur chemin "naturel" ou pas? Si oui, ça devrait marcher tel quel. Sinon, il faut effectivement que tu déplaces la deuxième règle en premier.

Jacques.
 
WRInaute passionné
jcaron a dit:
Sauf erreur de ma part, les RewriteCond ne s'appliquent qu'à la seule RewriteRule qui suit.
c'est exactement ca.

Il manque un flag [L] à ta règle pour éviter qu'il n'applique une autre règle après.
 
Discussions similaires
Haut