Apache目录列表

Apache目录列表,apache,tomcat,ubuntu,Apache,Tomcat,Ubuntu,使用服务器IP地址时,我无法阻止apache创建目录列表。我已尝试编辑相关的网站可用文件如下 <VirtualHost *:80> JkMount /* default ServerName example.co.uk ServerAlias www.example.co.uk ServerAdmin me@example.co.uk DocumentRoot /var/www/example.co.uk/public_html Err

使用服务器IP地址时,我无法阻止apache创建目录列表。我已尝试编辑相关的网站可用文件如下

<VirtualHost *:80>
    JkMount /* default
    ServerName example.co.uk
    ServerAlias www.example.co.uk
    ServerAdmin me@example.co.uk
    DocumentRoot /var/www/example.co.uk/public_html
    ErrorLog /var/www/example.co.uk/logs/error.log
    CustomLog /var/www/example.co.uk/logs/access.log combined
    <Directory /var/www/example.co.uk/public_html>
        Options -Indexes
    </Directory>
</VirtualHost>

JkMount/*默认值
ServerName example.co.uk
ServerAlias www.example.co.uk
服务器管理员me@example.co.uk
DocumentRoot/var/www/example.co.uk/public\u html
ErrorLog/var/www/example.co.uk/logs/error.log
CustomLog/var/www/example.co.uk/logs/access.log
选项-索引
…但如果我使用此格式的url访问服务器,则会列出公用html文件夹内容

我还试图修改位于/etc/apache2/apache.conf的apache配置文件,以包括以下内容:

<Directory />
    Options -Indexes
</Directory>

选项-索引
…但是没有快乐

我正在使用Tomcat,我需要我的WEB-INF文件夹来拒绝访问。没有,因此可以下载任何.class文件

有人知道我怎么解决这个问题吗


谢谢

如果你在结尾加上/*怎么办

<Directory /var/www/example.co.uk/public_html/*>
        Options -Indexes
</Directory>

选项-索引
更新:
或者尝试在VirtualHost指令之外添加条目。

这意味着它将不会达到您的VirtualHost设置,而是默认的虚拟主机设置

您有2个选项(至少):

1,将.htaccess文件放入要限制其列出的目录

2、使用与基于名称的虚拟主机类似的设置设置基于IP的虚拟主机

你说你把

<Directory />
    Options -Indexes
</Directory>

选项-索引

你应该有位置而不是目录那里

这听起来有点奇怪。在ApacheTomcat服务器前面有ApacheHTTPD吗

在这种情况下,apachehttpd不能指向apachetomcat文件所在的目录!两者之间的通信更像是一个代理,而不是一个插件


为此,我们使用mod_proxy_ajp有一些很好的经验。但是,如果您能够下载.class文件并(打开恐慌模式)web.xml(关闭恐慌模式),则可能会出现严重错误。

感谢您回答Attila,但这里没有乐趣。这就好像站点可用文件被忽略了一样!谢谢rkosegi!我按照您的建议修改了apache.conf文件,效果很好。我再也看不到目录列表了。我仍然可以导航到.class文件并下载它们。。。您知道我如何停止这种操作,同时允许文件按预期在Tomcat中执行吗?谢谢rkosegi,正如你所说,我还设置了一个基于IP的虚拟主机,它也解决了我的另一个问题。由于IP地址重定向到tomcat中的另一个站点,我无法再访问.class文件。非常感谢你的帮助。你好,Wemu,谢谢你的回复。我现在使用rkosegi建议的“虚拟IP”方法修复了这个问题。当我使用服务器的IP地址作为url的开始时,我只能直接访问这些文件。“在ApacheTomcat服务器前面有ApacheHTTPD吗?”-我不知道!我正在使用Ubuntu,我只是按照平常的方式安装了这些软件包。我怎么才能知道呢?我的印象是Apache和Tomcat是独立的实体,因为我必须分别重新启动它们。这不正常吗?嗨,这很正常。apachehttpd是一个web服务器。强大、可扩展且灵活(身份验证、mods、php/perl/phyton/…),但它不能作为Java应用程序的Servlet容器。因此有了ApacheTomcat。两者都来自Apache .Org,但不混合它们-它们完全分开,因为Apache是基础而不是单个产品。因此,您通常需要运行两个进程,在端口80上侦听的Web服务器响应任何http://请求,而在另一个端口上运行的tomcat servlet容器。Web服务器只是一个将某些请求重定向到tomcat的代理。如果通过使用ip地址访问web服务器将您带到Tomcat目录,我猜默认文档根指向该位置,这是不正确的。配置apachehttpd以指向仅包含公共可读文件的目录。对于您希望tomcat响应的位置,请配置mod_proxy_ajp或mod_proxy。在这种情况下,不需要文档根。