【问题标题】:Zend Framework - Deny access to folders other than public folderZend Framework - 拒绝访问公用文件夹以外的文件夹
【发布时间】:2012-12-24 06:27:41
【问题描述】:

全部,

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

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

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

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

谢谢

【问题讨论】:

    标签: .htaccess zend-framework apache2


    【解决方案1】:

    最简单的方法(以及 Zend Framework 安装程序设计使用的方法)是只将公用文件夹的内容放在 DocumentRoot 下。其他所有内容都应该在 DocumentRoot 之外。

    如果由于某种原因您不能这样做,您可以在其他每个子目录中放置一个 .htaccess: 订单允许,拒绝 全部拒绝

    对 cme​​ts 的回应:

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

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

    此外,关于 .htaccess,您应该只需要在目录树的顶层有一个 .htaccess 文件,因此在上面的示例中,您将在以下各项中分别放置一个:应用程序、包含、库和设计。

    【讨论】:

    • 所以,你的意思是我的文档根目录应该指向 C:\\xampp\\htdocs\\xampp\\helloworld\\public\\ 。这对我不起作用,因为如果代码请求 /application/controller/action,它就找不到它..
    • 每个目录中的 .htaccess 文件看起来并不乐观。有很多很多子目录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2013-07-25
    • 2013-10-08
    • 1970-01-01
    相关资源
    最近更新 更多