htaccess是不是会忽略它应该的图像?

时间:2012-03-01 22:27:49

标签: .htaccess mod-rewrite

我有一个htaccess文件应该将任何不存在的文件/文件夹/ etc重定向到应用程序的index.php脚本中,它们由应用程序的SEO重写处理。

问题是任何丢失的图像也会重定向到应用程序中,这会导致大量额外负载,而且不必要。我一直试图让这个htaccess文件忽略图像,但即使这个应该正在工作,但事实并非如此,而且我完全没有想法为什么...

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !.*\.(gif|png|jpe?g|ico|swf)$ [NC]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?sef_rewrite=1 [L]

当我向http://www.domain.com/folder_that_doesnt_exist/image.jpg发出请求时,会重定向到index.php

当我向http://www.domain.com/folder_that_does_exist/image.jpg发出请求时,重定向到索引脚本

我不确定我在这里丢失了什么,因为除非指定了OR,否则只有在请求通过RewriteCond语句的全部时才应用RewriteRule ?它显然不应该通过......

更新

我已将代码修改为以下内容以消除可能的问题,但它仍将所有不存在的图像重定向到脚本中...

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.(gif|png|jpe?g|ico|swf)$ [NC]
RewriteCond %{REQUEST_FILENAME} !\.(gif|png|jpe?g|ico|swf)$ [NC]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?sef_rewrite=1 [L]

1 个答案:

答案 0 :(得分:2)

Maby试试这个:

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} \.(gif|png|jpe?g|ico|swf)$ [NC]
RewriteRule .* - [R=404,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]