【问题标题】:How to exclude .png files from being rewritten via htaccess如何通过 htaccess 排除 .png 文件被重写
【发布时间】:2012-12-25 09:32:08
【问题描述】:

当访问公用文件夹时,我有以下规则将所有流量重定向到 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]

【问题讨论】:

    标签: php .htaccess apache2


    【解决方案1】:

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

    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]
    

    【讨论】:

    • $1 要求在它前面有一个表达式(用括号括起来)以便获取这些数据?我认为您不能简单地说 $1,因为该寄存器中没有数据,直到您先说 (.+) 之类的东西。
    • 也许我只是看到你脱离了整体背景?
    • 这似乎不适用于我指定的上述规则。
    • 对,对不起,我只是复制了一行。我会给它一个编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    相关资源
    最近更新 更多