2009-06-12 3 views
1

Je voudrais avoir mod_rewrite entrer en vigueur pour tous les noms de fichiers qui n'existe pas, sauf si ce nom de fichier se termine par js, css, GIF, etc., de sorte que ceux retourneraient 404s réguliers ...Comment utiliser mod_rewrite pour rediriger vers index.php à l'exception des assets?

J'ai essayé ceci dehors:

RewriteCond %{REQUEST_FILENAME} \.(js|ico|gif|jpg|png|css|pdf)$ [OR] 
RewriteCond %{REQUEST_FILENAME} favicon.ico$ [OR] 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^(.*)$ /index.php/$1 [L] 

que j'ai trouvé en ligne quelque part, mais cela ne semble pas fonctionner. Mes fichiers JS non existants sont toujours routés vers mon fichier index.php.

Répondre

2

Essayez cette règle:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !.*\.(js|ico|gif|jpg|png|css|pdf)$ /index.php%{REQUEST_URI} [L] 
+0

semble plausible, mais cela ne semble toujours pas fonctionner. – blockhead

+0

Eh bien ça marche pour moi. – Gumbo

+0

Peut-être que c'est ma configuration de serveur ... Je l'ai essayé sur un autre serveur et cela a fonctionné comme annoncé. – blockhead

0

Avez-vous ajouté les commandes qui vont avant le fichier .htaccess? Aimez-vous cette ligne?

RewriteEngine On 
+0

Evidemment ... si ce n'était pas là mod_rewrite ne fonctionnerait pas du tout! – blockhead

0

Vous pouvez utiliser le [NC] drapeau sur la première ligne si vous pouvez non seulement .js mais aussi .js ou .js ou. Fichiers jS ...