Apache2设置是否显示目录列表

Apache2设置是否显示目录列表

Apache2的配置文件为 /etc/apache2/apache2.conf ,在 <Directory> 部分设置目录访问权限。

一般我们需要隐藏服务器的跟目录,所以我们将配置改为

<Directory />
-	Options Indexes FollowSymLinks
+	Options FollowSymLinks
	AllowOverride None
	Require all denied
</Directory>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

假如我们需要访问部分服务器下的目录,则新设置一个 <Directory> 节点,并且在将目录设置为服务器的绝对路径,如我们需要访问服务器下的 DownLoadList 目录

<Directory /var/www/html/DownLoadList/>
  Options Indexes
  IndexOptions NameWidth=25 Charset=UTF-8 
  Allow from all
  DirectoryIndex none
</Directory>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其中DirectoryIndex none的作用是为了避免自动打开目录下的index.html文件

1 apache安装过程(centos5.1_64)
./configure –prefix=/usr/local/apache2.2.8 LDFLAGS=”-L/usr/lib64 -L/lib64″–enable-mods-shared=all –enable-so –libdir=/usr/lib64 –with-mpm=worker –enable-cache –enable-disk-cache –enable-mem-cache –enable-file-cache –enable-rewrite=share –enable-proxy=share –enable-cgi –enable-proxy-ajp=share –enable-dav=share –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util/
make && make install
2 和tomcat成功整合后,配置apache的默认语言为中文:
vi httpd.conf里 去掉注释#
Include conf/extra/httpd-languages.conf
然后配置conf/extra/httpd-languages.conf文件
添加如下:
DefaultLanguage zh-CN
AddDefaultCharset gb2312
设置虚拟目录:
vi ../httpd.conf
……
Alias /shujb “/home/jack”
<directory “=”” home=”” jack”=””>
Options Indexes FollowSymlinks
       AllowOverride None
Order allow,deny
Allow from all
…….
设置完成后,可以显示目录,但无法正常显示中文,出现乱码。在浏览器切换编码可以正常显示。说明问题处在apache设置的默认语言没有生效。
个性化Apach2目录列表,主要取决于对mod_autoindex模块中的各种指令的使用
和配合。可以去先阅读一下Apache2.0手册中的mod_autoindex模块文档。
个性化配置开始
一、修改httpd.conf文件
对需要个性化的目录进行定制:
 <directory “=”” www=”” download”=””>
Options Indexes FollowSymlinks
IndexOptions FancyIndexing ScanHTMLTitles NameWidth=25
DescriptionWidth=128 VersionSort FoldersFirst
IndexIgnore favicon.ico header.html footer.html images
HeaderName header.html   #header.html路径相对于主目录的
ReadmeName footer.html
AddDescription “ftp安装包” vsftpd.tar.gz
IndexOrderDefault Ascending Name
AllowOverride None
Order allow,deny
Allow from all
[编辑]
部分指令说明:
    * ScanHTMLTitles:如果目录中含有HTML文件,则Apache会自动读取HTML文
件的< title>……部分,用HTML文件的标题作为Description(描述
)显示在列表目录中的 Description部分。。(注意:加载该指令会加大CPU的
负荷!)
    * NameWidth=25 :指定目录列表可以显示最长为25字节的文件/目录名,如
果使用*来做值,会自适应到最长文件名。
    * DescriptionWidth=128:指定目录列表可以显示最长为128字节的文件/目
录描述内容。
    * VersionSort:如果目录中含有同一文件的不同版本,则Apache会对该文
件按照版本号自动排序。
    * FoldersFirst:最先列出文件夹会使显示效果更好看一些吧!
    * IndexIgnore:在它后面设定的文件/目录不会在目录列表中显示。
    * HeaderName:指定该目录列表的header模板,指定一个html文件后,
Apache会用这个网页替换掉默认目录列表上面呆板的Index of …..而显示出个
性化的头网页。(注意:文件路径是相对于列表目录的根而言的,并不是相对于
系统根或者网站根而言的!)
    * ReadmeName:指定该目录列表的footer模板,指定一个html文件后,
Apache会在目录列表的底部加载这个网页。(注意:文件路径是相对于列表目录
的根而言的,并不是相对于系统根或者网站根而言的!)
    * AddDescription:如果你想为某个文件设置一个Description(描述)的
话,就使用这个指令,格式是AddDescription “描述” 文件名 。
    * IndexOrderDefault Ascending Name:指定目录列表的排序方式为按名称
排序。
当然,还可以定制很多其他的内容,包括可以为每一个文件设定一个图标等等,
去读文档吧。
[编辑]
二、建立header.html和footer.html
这两个文件是列表目录的头网页和尾网页,也是个性化的关键。其实这部分和
Apache水平已经没有什么关系了,主要还是看你制作网页水平如何了,呵呵。
这里给出两个文件的格式:
    * header.html:
可以在这里加入个性化内容,图片、FLASH、表格等等,随意啦!

* footer.html:

可以在这里加入个性化内容,图片、FLASH、表格等等,随意啦!

注:
options -indexes
(此时直接访问目录403 Forbidden)
显示:
options +indexes

Apache默认显示文件列表.
可以进一步控制文件列表显示模式:
这里有许多配置

HeaderName HEADER.html
在返回的文件列表信息顶部插入的Html文件.可以使用绝对或相对路径.不过仍然
建议使用绝对路径,因为相对路径无法被子目录继承..
指定的文件在Apache里设定的MIME类型必须为 text/*
默认的文件是header.html
ReadmeName /avc.htm
附加在文件列表尾部的HTML文件.用法同 HeaderName Filename的语法
默认的文件是当前目录下 footer.html
IndexOptions Charset=GB2312 这是目录的默认语言。
IndexIgnore *.jpg *.ico .htaccess php.ini
在返回文件列表中屏蔽特定文件.如果设置为 IndexIgnore * ,那么实际上返回
一个空文件
IndexOrderDefault Ascending|Descending Name|Date|Size|Description
文件列表排序方式
AddDescription “Qmail安装包” qmail.tar.gz
设置目录列表中文件、文件夹的描述
Note:
通常的header.html 和 footer.html格式:
header.html
…..

footer.html

……

即把文件列表嵌套.在 表格里

最后我的设置为:
Alias /shujb “/home/jack”
<directory “=”” home=”” jack”=””>
Options Indexes FollowSymlinks
IndexOptions FancyIndexing ScanHTMLTitles HTMLTable NameWidth=125 DescriptionWidth=256 VersionSort FoldersFirst
IndexIgnore favicon.ico header.html footer.html images
HeaderName /conf/extra/header.html
ReadmeName /conf/extra/footer.html
IndexOptions Charset=GB2312
IndexOrderDefault Descending Name
AllowOverride None
Order allow,deny
Allow from all
header.html放在主目录ROOT/conf/extra/header.html下。
header.html,footer.html也就没有设置什么。至此目录可以正常显示了。。相对于apache默认的好多了。呵呵。

实例:

导读:apache2服务器中禁止目录列表的设置方法,修改Options项,去掉Indexes,或改成-Indexes,禁止显示目录列表。

Apache2禁止显示目录列表的设置方法

一、默认情况,如果apache指定的目录没有配置“index.php index.html index.htm”文件之一,则appache会显示目录及目录下的所有文件:

复制代码代码示例:
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
</IfModule>

二、在apache2中,所有配置都可以写到/etc/apache2/httpd.conf(默认里面是空的), 但在站点配置文件/etc/apache2/sites-available/* (例如default)文件中。

可以单独针对某个单独的域名来配置规则,在其中找到目录配置:

复制代码代码示例:
 <Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

修改Options项,去掉“Indexes”,或改成“-Indexes”即可(索引)。

修改完配置,重新载入apache2配置或重启apache2:

复制代码代码示例:
#sudo servcie apache2 reload 或
#sudo /etc/init.d/apache2 restart

重启

service apache2 restart重启Apache服务才会生效