Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何将每个请求改写为index.php,除了真实文件,但不包括一个真实目录?_Apache_Mod Rewrite - Fatal编程技术网

Apache 如何将每个请求改写为index.php,除了真实文件,但不包括一个真实目录?

Apache 如何将每个请求改写为index.php,除了真实文件,但不包括一个真实目录?,apache,mod-rewrite,Apache,Mod Rewrite,让我解释一下我的情况: 我使用的是MVC框架(CodeIgniter),因此每个请求都会被重写到index.php文件中,而index.php文件又会将其路由到我的类和函数中 当然,如果有对真实文件的请求,它们不应该由脚本处理,而是直接从Web服务器发送到浏览器 Owkay没问题,下面的重写规则可以做到这一点: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ in

让我解释一下我的情况:

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

当然,如果有对真实文件的请求,它们不应该由脚本处理,而是直接从Web服务器发送到浏览器

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
我希望对某个文件夹的请求(称之为“private”)仍然由php处理。这样做的原因是,我将验证用户是否经过身份验证,如果是,则将内容发送到浏览器

  • 家里有谁能帮忙的阿帕奇大师吗
  • 对于这个问题,这是一个可以接受的解决方案吗
试试这个规则:

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

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

hm奇怪的是,这似乎不起作用。。。请求未被重写。。。有什么建议吗?无论如何,谢谢!;-)好吧!谢谢,这让我走上了正轨!;-)根据您的anwser,我将[OR]移动到文件和禁用目录列表的重写条件,从而通过脚本中的任何逻辑来“保护”文件。。。txn!