.htaccess排除要重写的目录

时间:2011-04-19 07:21:13

标签: apache .htaccess mod-rewrite

我在这个htaccess中出错了,因为/ assets /文件夹不会从重写规则中排除。 当我访问时:http://www.site.com/assets/images/sidebar1/some/pic.pngs未按预期返回404。

Options -Indexes
RewriteEngine On

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

RewriteCond %{REQUEST_URI} !^/?(assets|css)/
RewriteRule . index.php

由于

1 个答案:

答案 0 :(得分:1)

你的规则说:

在以下情况下将所有内容重写为index.php:

网址不是文件,不是目录,不在/assets//css/

您要求的文件不是文件,不是目录,而是assets/

这条规则还可以,但是!你的日志显示然后你要求/home/valentin/public_html/404.shtml(自动重定向未知对象!)

此请求再次通过规则!

它不是文件(!-f匹配),不是目录(!-d匹配),它不在assets/中,也不在css/中,然后它被重写为index.php < / p>

Q.E.D。

您可以将404.shtml放在public_html/文件夹中,或者在apache配置中将其更改为真实文件,从而解决此问题。