Zend Framework - 拒绝访问公用文件夹以外的文件夹

时间:2010-05-06 05:35:17

标签: .htaccess zend-framework apache2

所有

我有以下Zend应用程序结构:

helloworld
 - application
     - configs
     - controllers
     - models
     - layouts
 - include
 - library
 - public
    - .htaccess
    - index.php
 - design
 - .htaccess

目前,如果用户访问http://localhost,上面的.htaccess文件确定,请求会自动路由到http://localhost/public。如果用户从地址栏访问公共文件夹以外的任何其他文件夹,则会获得该文件夹的目录列表。

如何确保拒绝用户访问除公用文件夹以外的所有其他文件夹?我希望用户在访问任何其他文件夹时被重定向到公用文件夹。但是,如果底层代码从其他文件夹请求某些东西,(例如)它应该仍然可以工作..

由于

1 个答案:

答案 0 :(得分:2)

最简单的方法(以及Zend Framework设置的设计方法)是仅将公共文件夹的内容放在DocumentRoot下。其他一切都应该在DocumentRoot之外。

如果由于某种原因无法执行此操作,则可以在每个其他子目录中放置.htaccess:     订单允许,拒绝     拒绝所有

对评论的回应:

您的应用程序不应该需要应用程序/控制器目录(或除“public”之外的任何目录)在DocumentRoot下。 PHP包含可以来自DocumentRoot之外(通常)。

如果您正确地遵循典型的建议的Zend Framework应用程序文件夹结构,那么需要可以从浏览器直接访问的所有资源(即images / flash / multimedia,javascripts,css和index.php)应该在公共目录。

此外,关于.htaccess,您只需要在目录树的顶层中使用.htaccess文件,因此在上面的示例中,您将在每个文件中放置一个:application,include,library和design。