我的MVC目录结构中有一个私人文件夹,我想拒绝所有访问。此文件夹(和包含文件)应该可访问的唯一方法是仅通过包含。
对于公共文件夹,任何人都应该能够访问它,因为那是我的视图。
root index.php是我的条目文件,它应该能够包含并执行私有的index.php脚本。
任何能够帮助我或指出正确方向的人都能实现这一目标吗?
private
model
controller
core
config.ini.php
index.php
...
public
stylesheets
signup.php
login.php
index.php
...
index.php
答案 0 :(得分:1)
将此.htaccess添加到您不想直接访问的所有文件夹中。
<Files *.php>
Order Deny,Allow
Deny from all
</Files>
答案 1 :(得分:1)
如果您使用Apache,典型的解决方案是将.htaccess文件放在./private中,其中包含:
Deny from all
我也同意hakre对你的webroot更有意义的公共目录。
另一种解决方案是公开webroot,然后将webroot目录中的私人移到
。即
site/private/...etc...
site/www/index.php
site/www/stylesheets/...etc...
www是你的webroot。
答案 2 :(得分:1)
有两种方法:
1:正确的方式
/ homedir / - 您的网站
/ homedir / private / - 您的私人文件
/ homedir / httpdocs / - 网站的公共部分
2:另一种方式
/ httpdocs / private / - 私人文件
/httpdocs/private/.htaccess - 订单允许,拒绝全部拒绝
/ httpdocs / - 其余文件
但是,您应该知道,如果您的网络服务器挂断或更改某些特定设置,您的.htaccess文件可能会变为非活动状态。
这意味着您的所有私人文件都可以通过浏览器使用。
这就是为什么第一种方式优先于.htaccess限制。
还有什么可能吗?代码级别限制:
在每个公共php脚本中定义一个常量:
define(“MY_SECRET_CONSTANT”,1);
在每个私有php脚本中,检查代码的第一行是否定义了常量:
if(!defined(“MY_SECRET_CONSTANT”)){die(“无法直接打开文件。”}