.htaccess异常(图片损坏)

时间:2011-10-20 20:08:02

标签: .htaccess friendly-url

我正在使用:

RewriteRule ^(.*)$ index.php?abrir=$1
RewriteRule ^(.*)/(.*)/(.*)$ index.php?abrir=$1&id=$2&pagina=$3

我有图片链接:

  

/data_livro/capa_livro/af58e898f91509b.jpg

如何为显示图片添加例外?它打破了......

我的完整.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([^/]+)$ index.php?abrir=$1
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?abrir=$1&id=$2&pagina=$3

RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

ErrorDocument 400 index.php
ErrorDocument 401 index.php
ErrorDocument 403 index.php
ErrorDocument 404 index.php
ErrorDocument 504 index.php
ErrorDocument 505 index.php
DirectoryIndex index.php

2 个答案:

答案 0 :(得分:2)

如果我正确理解了这一点,那么在RewriteRules之前找到以下内容应该可以解决问题:

RewriteCond %{REQUEST_FILENAME} !-f

但是,我还建议将RewriteRules修改为:

RewriteRule ^([^/]+)$ index.php?abrir=$1
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?abrir=$1&id=$2&pagina=$3

答案 1 :(得分:1)

我发现在重写规则中使用.*过于笼统。我倾向于使用更具体的角色类:

RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?abrir=$1
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?abrir=$1&id=$2&pagina=$3

这不会重写任何带有点的请求,因此会忽略特定的文件名(/styles/my.css,/images/example.jpg)。此外,我想添加/?以允许可选的尾部斜杠,但这是个人偏好: - )。