2009-10-19 12 views
1

J'ai des problèmes avec les fichiers statiques réécrivant l'url dans la configuration actuelle de .htaccess sur apache2.Réécrire les URL pour le contenu statique

Ma structure app est:

/siteroot 
/siteroot/app 
/siteroot/lib 
/siteroot/... 
/siteroot/public <- all the static files (images, js, etc.) stored here 
/siteroot/index.php 
/siteroot/.htaccess 

Donc, je dois réécrire l'url /css/style.css à /public/css/style.css. Je l'ai fait de manière très simple, mais quand le fichier n'est pas trouvé, il provoque 10 redirections internes, ce qui est mauvais. Je dois d'une manière ou d'une autre retourner le code 404 si le fichier n'est pas trouvé, ou simplement le passer à la règle suivante. Et je n'ai aucun accès au fichier de configuration du site. Seulement .htaccess.

La raison pour laquelle i`m poser cette question est que le site était en cours d'exécution sur nginx et j'ai besoin de reconstruire la même configuration sur apache.

Voici mon fichier .htaccess.

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^.+\.(jpg|jpeg|gif|png|ico|css|js|swf)$ /public/$0 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

Répondre

3

test si une redirection est raisonnable:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/public/$0 -f 
RewriteRule ^.+\.(jpg|jpeg|gif|png|ico|css|js|swf)$ /public/$0 [L] 
+0

merci, celui-ci résolu le problème. –

+0

@ Dan Sosedoff: Notez également ce que Kev a dit. Comme ma solution nécessite deux tests de système de fichiers avant que la redirection ne se produise, cette solution n'est pas la plus rentable. – Gumbo

0

Si le nombre de préfixes est limité, vous pouvez ajouter un autre groupe à votre regex:

RewriteRule ^(css|js|images|etc)/.+\.(jpg|jpeg|gif|png|ico|css|js|swf)$ /public/$0 [L] 
Questions connexes