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

Hide directory listing when accessing public folders in the browser

如何限制对我的 zend framework 2 public 文件夹(例如 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/

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

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

我编辑了您的问题并添加了 "directory listing" 一词,因为这是显示在您屏幕上的文件列表的通常称呼方式。起初我在阅读您的问题后不知道您想要什么。但是在你的评论之后我明白了。

通常情况下,您可以通过向 Apache 服务器的 .htaccess 文件添加额外的规则来防止 directory-listing。

您可以找到很多关于如何执行此操作的帖子,例如 here and here or many more by searching the topic on Whosebug

魔法被关闭:

Options -Indexes

并由

开启
Options +Indexes

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

Indexes If a URL which maps to a directory is requested and there is no DirectoryIndex (e.g., index.html) in that directory, then mod_autoindex will return a formatted listing of the directory.