在浏览器中访问公用文件夹时隐藏目录列表

Posted

技术标签:

【中文标题】在浏览器中访问公用文件夹时隐藏目录列表【英文标题】:Hide directory listing when accessing public folders in the browser 【发布时间】:2017-06-11 15:29:01 【问题描述】:

如何限制对我的 zend 框架 2 公用文件夹的访问,例如 css 文件夹?我想隐藏通过http 访问文件夹时显示的目录列表。但我希望应用程序可以正确使用这些文件。

当我访问域中的css 文件夹时,会显示此目录列表:

虚拟主机配置:

<VirtualHost *:80>
    ServerName server1.jobsoft.co
    ServerAlias server1.jobsoft.co
    DocumentRoot /var/www/html/engsvc_dev/public
    ErrorLog /var/log/httpd/engsvc_dev.error.log
    CustomLog /var/log/httpd/engsvc_dev.common.log common

    <Directory /var/www/html/engsvc_dev/public>

            DirectoryIndex index.php
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            Allow from all

    </Directory>

我的.htaccess 文件:

RewriteEngine on

RewriteCond %HTTP_HOST ^(www.)?server1.jobsoft.co$
RewriteCond %REQUEST_URI !^/engsvc_dev/public/
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ /public/$1

RewriteCond %HTTP_HOST ^(www.)?server1.jobsoft.co$
RewriteRule ^(/)?$ /public/index.php [L]

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

【问题讨论】:

css 文件通常需要可公开访问。 “应用程序正确利用”是什么意思。如果您的意思是在客户端应用程序/代码中使用它,那么它需要可公开访问。如果您的意思是要在服务器端代码中使用它,那么我建议您从公用文件夹中删除此文件。 我不想在浏览器上显示结构,或者这不可能? 检查here或here 【参考方案1】:

我编辑了您的问题并添加了“目录列表”一词,因为这是屏幕上显示的文件列表的常用名称。起初我不知道您在阅读您的问题后想要什么。但是在你的评论之后我明白了。

通常,您可以通过在您的 Apache 服务器的 .htaccess 文件中添加附加规则来阻止目录列表。

您可以找到很多关于如何执行此操作的帖子,例如 here 和 here 或更多 by searching the topic on ***。

魔法关闭:

Options -Indexes

并被打开

Options +Indexes

在this apache documentation,您可以在选项指令一章中阅读以下内容:

索引 如果请求映射到目录的 URL,并且该目录中没有 DirectoryIndex(例如 index.html),则 mod_autoindex 将返回该目录的格式化列表。

【讨论】:

以上是关于在浏览器中访问公用文件夹时隐藏目录列表的主要内容,如果未能解决你的问题,请参考以下文章

Create-React-App公用文件夹子文件夹

expressJWT阻塞公用文件夹,如何解锁?

Exchange Onine 公用文件夹

Grails 3.0 公用文件夹

将公用文件夹 ClientAccessPermissions 导出到 csv

在 Laravel 中,如何获取公用文件夹中所有文件的列表?