我正在使用:
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
答案 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)。此外,我想添加/?
以允许可选的尾部斜杠,但这是个人偏好: - )。