。当某些文件不存在时,.htaccess重定向到404页面

时间:2014-08-02 17:24:57

标签: apache .htaccess mod-rewrite redirect http-status-code-404

我已经使用我自己的MVC系统一段时间了,它的效果非常好!

我在我的.htaccess中使用它

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]

现在,当页面(控制器)不存在时,我会重定向到/ error (在index.php文件中)。 但有些情况下,图片将在文件夹中删除,并仍然在html页面中打印。这将自动使浏览器调用不存在的图片(因此它将调用/错误页面)

现在我想要做的是,当一张图片或任何文件(我估计除了php,html文件)之外,我想重定向到404文件而不是/ error。

我确信这可以在.htaccess文件中解决,但我和Apache目前还不是那么好的。谁是Apache的朋友?

谢谢!

1 个答案:

答案 0 :(得分:1)

假设您的图片位于公共子文件夹中,例如/images中的http://example.com/images/img.png,您可以更改规则以完全排除此子目录,然后添加错误文档。这个.htaccess应该在你的www-root中。

RewriteEngine On

#If the file does not exist, and the url doesn't start with /images
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/images
RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]

#If the rule above didn't match, and the file does not exist, use the ErrorDocument
ErrorDocument 404 /404.php