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

时间:2009-11-20 20:23:01

标签: apache mod-rewrite

让我解释一下我的情况:

我正在使用MVC框架(CodeIgniter),因此每个请求都会被重写到我的index.php文件中,而该文件又会将其路由到我的类和函数。

Offcours如果有真实文件的请求,他们不应该由脚本处理,而是直接从webserver发送到浏览器。

Owkay没问题,以下重写规则就是这样做的:

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

我希望某个文件夹的请求(让它称为'私有')仍由php处理。这样做的原因是我将验证用户是否经过身份验证,如果是,则将内容发送到浏览器。

  • 家里有谁可以帮忙的阿帕奇大师?
  • 这个问题是否可以接受?

1 个答案:

答案 0 :(得分:5)

尝试此规则:

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

这将排除private或以private/开头的所有网址路径,即使它们是现有文件夹或文件。