看,规则是:
RewriteCond %{REQUEST_FILENAME} !-f
我将此规则放在.htaccess中我告诉网络服务器:忽略URL中的所有文件路径。
例如:http://www.foo.com/images/file.jpg
此文件将被忽略,如果此URL由脚本(.php)处理并返回文件内容,则仅显示图像。我需要这样做,但不是所有的文件:
例如:.JS文件NOT和其他文件类型。
如何“重写”该规则以忽略特定类型的文件或仅适用于特定文件,如:
仅限ACCEPTS:JPG,PNG,JPEG,MP3
RewriteCond %{REQUEST_FILENAME}.(jpg|png|jpeg|mp3 ... ) !-f
OR
NO ACCEPTS:JS,TXT,CSS
RewriteCond !%{REQUEST_FILENAME}.(js|txt|css| ... ) !-f
答案 0 :(得分:1)
IGNORE ALL THE FILE PATHS IN THE URL.
您要告知检查所请求文件是否存在。 !-f表示文件不存在于请求URL指向的物理位置"。因此,如果文件实际存在于请求的位置,则不会执行php脚本。目前尚不清楚为什么要添加一些排除,因为如果文件存在,无论如何都会被请求,如果它不存在,你的脚本应生成404错误的页面,否则它将是服务器生成的页面。可能不那么花哨:))
除了第一个答案,它应该是,
RewriteCond %{REQUEST_FILENAME} !\.(jpg|png|jpeg|mp3)$ [NC]
为了摆脱区分大小写。
结合在一起
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.(jpg|png|jpeg|mp3)$ [NC]
# your RewriteRule goes here
答案 1 :(得分:0)
如果网址以列出的扩展名之一结束,则匹配:
RewriteCond %{REQUEST_FILENAME} \.(jpg|png|jpeg|mp3)$
如果网址未以列出的扩展名之一结束,则匹配:
RewriteCond %{REQUEST_FILENAME} !\.(jpg|png|jpeg|mp3)$
默认条件由“AND”连接。只有当A和B都匹配时才会匹配:
RewriteCond A
RewriteCond B
如果A 或 B匹配,则匹配:
RewriteCond A [OR]
RewriteCond B
更多详情:http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond