在浏览器中访问公用文件夹时隐藏目录列表
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
将返回该目录的格式化列表。
【讨论】:
以上是关于在浏览器中访问公用文件夹时隐藏目录列表的主要内容,如果未能解决你的问题,请参考以下文章