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

San*_*uys 2 apache mod-rewrite

让我解释一下我的情况:

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

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

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

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

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

  • 在房子里有谁可以协助的阿帕奇大师?
  • 对于这个问题,这是否可以接受?

Gum*_*mbo 5

试试这条规则:

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

即使它们是现有文件夹或文件,也会排除所有private或以其开头的URL路径private/.