【问题标题】:How to allow files to be accessed by scripts but not the internet - Apache如何允许脚本访问文件而不是互联网 - Apache
【发布时间】:2012-04-02 20:34:03
【问题描述】:

我希望建立一个运行 php.ini 的 apache 服务器。我希望可以从 www.example.com/ 访问特定文件夹(例如 /site/ )中的所有文件。但是,我希望 /site/data/ 中的文件不通过 www.example.com/data/ 可见。我希望 www.example.com/fun.php 脚本能够读取/写入 /site/data/ 。通过权限和 apache 默认文件执行此操作的最佳方法是什么?

【问题讨论】:

    标签: apache .htaccess permissions


    【解决方案1】:

    您需要设置与您建议的目录结构略有不同的目录结构。而是在如下目录下运行您的网站:

    /site/html 
    

    并将您的数据存储在如下目录下:

    /site/data
    

    将 Apache 配置为仅提供来自 /site/html 而不是 /site/data 的文件

    或者如果您使用的是更传统的 apache 目录结构,则将您希望通过 Web 服务器公开访问的文件放在:

    /var/www/html
    

    以及您只希望您的应用程序能够访问的私有数据文件,例如:

    /var/www/data
    

    您的 Apache conf 文件将包含以下内容:

    DocumentRoot "/var/www/html"
    
    <Directory "/var/www/html">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    

    这样 /var/www/data 中的文件将无法公开访问,但这些文件仍然可以通过 /var/www/html/ 中的 php 脚本访问

    【讨论】:

    • 感谢您的帮助。它澄清了我的理解,也让我有点兴奋去做我认为我应该开始做的事情。
    【解决方案2】:

    通过将其放入 /site/data 下的 .htaccess 文件中来禁用 Apache 目录列表

    Options -Indexes
    

    【讨论】:

    • 这会停止文件列表,但文件仍然可以访问,而不是询问的内容。
    猜你喜欢
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2017-06-27
    • 2011-04-23
    • 1970-01-01
    • 2017-09-11
    • 2014-09-30
    相关资源
    最近更新 更多