所有
我有以下Zend应用程序结构:
helloworld
- application
- configs
- controllers
- models
- layouts
- include
- library
- public
- .htaccess
- index.php
- design
- .htaccess
目前,如果用户访问http://localhost,上面的.htaccess文件确定,请求会自动路由到http://localhost/public。如果用户从地址栏访问公共文件夹以外的任何其他文件夹,则会获得该文件夹的目录列表。
如何确保拒绝用户访问除公用文件夹以外的所有其他文件夹?我希望用户在访问任何其他文件夹时被重定向到公用文件夹。但是,如果底层代码从其他文件夹请求某些东西,(例如)它应该仍然可以工作..
由于
答案 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。