2009-11-11 9 views
1

Je suis en train de faire quelque chose comme ce qui suit dans mon fichier .htaccess:Impossible de mod_rewrite basé sur l'existence du fichier dans le répertoire mod_aliased?

Alias /assets /location/of/files 

RewriteCond %{REQUEST_URI} ^/assets/[0-9]+.jpg$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* /build_thumbnail.cfm?path=%{REQUEST_URI} [QSA,L] 

Donc, en théorie, il est assez simple:

  • une image est demandée à partir d'une URL commençant par/assets/
  • contrôles apache pour l'existence du fichier
  • se trouve, le fichier est servi
  • sinon, un script est exécuté à la place

Cela fonctionne très bien dans d'autres endroits, mais cela est la première fois que je l'ai essayé de l'utiliser dans un répertoire inclus comme un alias. Si je comprends bien, Mod Rewrite fonctionne avant Mod Alias, ce qui causerait sûrement que cela ne fonctionne pas (et en vérité, ma ligne Alias ​​est dans la conf. Apache alors que le reste est dans .htaccess).

Existe-t-il un moyen pour que Mod Rewrite reconnaisse le répertoire Aliased?

Est-il possible de remplacer la ligne Alias ​​par une ligne Rewrite?

+0

Dans mon cas, je réussi à contourner le problème en supprimant la directive Alias ​​de ma config apache et de mettre un lien souple dans le système de fichiers à la place. Probablement ne serait pas très utile si vous étiez sur Windows. –

Répondre

0

Essayez -F au lieu d'appeler une sous-requête:

RewriteCond %{REQUEST_URI} ^/assets/[0-9]+.jpg$ 
RewriteCond %{REQUEST_FILENAME} !-F 
RewriteRule .* /build_thumbnail.cfm?path=%{REQUEST_URI} [QSA,L] 
+0

Idée intéressante, je n'étais pas au courant que tu pouvais le faire. Je ne travaille toujours pas pour moi malheureusement. # ce juste 404s (semble que la mise en correspondance d'Alias ​​pour les actifs # dans les moyens apache qui conf qu'il ne soit même pas ici) RewriteCond% {REQUEST_URI} ^/assets/[0-9] +. Jpg $ RewriteRule. * /build_thumbnail.cfm [QSA, l] # cela fonctionne parce que img est un vrai répertoire dans la racine web RewriteCond% {REQUEST_URI} ^/img/[0-9] +. jpg $ RewriteRule. * /build_thumbnail.cfm [QSA, L] –