如何mod_rewrite每个请求index.php除真实的文件,但排除一个真实的目录?

让我解释一下我的情况:

我使用的是一个MVC框架(CodeIgniter),所以每个请求都被重写到我的index.php文件中,然后将这个文件路由到我的类和函数中。

如果有实际文件请求,则不应该由脚本处理,而应直接从networking服务器发送到浏览器。

Owkay没问题,下面的重写规则可以做到这一点:

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] 

我想要一个特定的文件夹(让称为“私人”)的请求仍然由PHP处理。 这样做的原因是,我会然后validation用户是否通过身份validation,如果是的话,发送内容到浏览器。

  • 任何可以协助的apache大师?
  • 这是一个可接受的解决这个问题?

试试这个规则:

 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d [OR] RewriteCond $1 ^private($|/) RewriteRule ^(.*)$ index.php/$1 [L] 

这将排除任何private或以private/开始的URL路径,即使它们是现有的文件夹或文件。