如何排除.png文件被htaccess重写

时间:2010-01-29 22:01:23

标签: php .htaccess apache2

我有以下规则,在访问公用文件夹时将所有流量重定向到index.php。如何修改它以排除.png文件?这意味着,如果访问了/public/something.png,它应该在浏览器中呈现,或者在使用以下代码调用时应该可以在代码中访问:

"<img src='/public/example.png'>"

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -s [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -l [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ index.php [NC,L]

1 个答案:

答案 0 :(得分:3)

我通常使用RewriteCond指令来指定我不想重定向到Front Controller的静态媒体内容的扩展。管道(|)字符表示“或”,因此您可以在此规则中添加或删除扩展程序,以适用于您不想重定向的任何扩展程序:

RewriteCond $1 !\.(js|ico|gif|jpg|png|css|swf|mp3|wav|txt|xml)$

修改

评论者是正确的,如果你使用那条确切的行,$ 1需要一些上下文。在您的特定情况下,您可以稍微改变它并将其放在index.php RewriteRule行上,如下所示:

RewriteRule !\.(js|ico|gif|jpg|png|css|html|swf|mp3|wav)$ index.php [NC,L]