2012-03-08 87 views
0

我的文档根目录是/ var/www,我没有启用虚拟主机。 这是我的/ var/WWW的文件夹结构:apache2 httpd配置

index.php 
classes (external) 
controllers 
models 
files (img, js, css) 
views (pages, components) 

正如你可以看到我使用一个模型视图控制器模式。我现在需要的是我必须在我的httpd.conf中使用正确的配置来定义只有文件夹可以被加载,并且没有其他文件夹,以防止“未找到”消息或直接的php访问。我如何设置?

这是我目前的httpd.conf

ServerSignature Off 
ServerTokens Full 

# Settings for server @ port 80. 
<VirtualHost *:80> 
    ServerName <url> 
    DocumentRoot /var/www 
    DirectoryIndex index.php 

    # No one has access to the main directory. 
    <Directory /> 
     Order Deny,Allow 
     Deny from all 
     Options None 
     AllowOverride None 
    </Directory> 

    # Configure the main directory 
    <Directory /var/www> 

     # Everyone has access to the main directory. 
     Order Allow,Deny 
     Allow from all 
     Options FollowSymLinks 
     AllowOverride None 

     # Enable clean urls. 
     RewriteEngine On 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteRule ^(.*)$ index.php/$1 [L] 
    </Directory> 
</VirtualHost> 

感谢您的帮助:)

回答

1

如果可能的话,这将是理想的,以保持你的控制器,查看脚本和其他应用程序相关的代码出/var/www和而是把它放在/var/application或类似的东西。

然后,您不需要任何重写规则来拒绝访问除文件以外的所有内容。如果您想添加对新文件夹的访问权限(例如/var/www/css),那么您可能需要采取措施使其可访问。或者你有相反的情况,你明确地拒绝你不想访问的文件夹。这是有效的,但如果.htaccess被破坏或有人忘记了规则移动到新的服务器,那么你有更多的工作要做。

index.php,定义一些常量,告诉文件住的地方(如define('APPLICATION_PATH', '/var/application');

+0

OMG ofcourse,这就是为什么他们创建应用程序库:P非常感谢 – randomKek 2012-03-08 01:32:35

+0

没问题,是Zend框架或别的东西 – drew010 2012-03-08 01:39:12

+0

!?没有我自己的,不喜欢大的框架,但是,嗯,现在我在/ var/application目录中完全否认了,但我不希望用户获得“没有权限”页面,而只是重定向到索引。/var/www的php是可能的吗? – randomKek 2012-03-08 01:42:28