在我的apache目录中使用名为index.html
的几乎为空的文件以避免目录列表(例如/ image文件夹)时,此文件的最小内容是什么?它可以是空的,还是应该包含类似的内容:
<!DOCTYPE html><title></title>
或
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
&npsp;
</body>
</html>
或介于两者之间?
答案 0 :(得分:5)
实际上,第一行代码是最低有效HTML5代码。 <!DOCTYPE html><title> </title>
虽然你必须有一个标题,但它是一个空格或文本。如果您不想提供标题以获得有效标记,请使用完整声明。
可以使用W3C validator
验证答案 1 :(得分:2)
如果您只是想避免目录列表,可能最好为错误代码403创建一个页面,然后在Apache配置中更改以下内容:
Options Includes Indexes FollowSymLinks MultiViews
为:
Options Includes FollowSymLinks MultiViews
从列表中删除Indexes
。如果您无权访问http.conf
文件,则将Options -Indexes
放入.htaccess
文件会产生相同的效果。这将使Apache在访问者尝试访问之前导致目录列表的URL时发送403 Access Denied错误。现在,您需要做的就是将这些错误重定向到您自己的自定义错误页面。您可以使用
ErrorDocument 403 /path/to/custom403errorpage.html
这不仅是一种更简单,更安全的方式,而且还让用户知道他们不应该环顾你的东西。
答案 2 :(得分:1)
为避免目录列表,您根本不需要HTML文件。您只需在文件夹中添加.htaccess文件即可。要禁用文件夹列表,请将此行添加到.htaccess文件
Options -Indexes
请注意,默认情况下,大多数实时主机目录列表都已禁用
答案 3 :(得分:0)
作为关于正式最小HTML文档的问题,这取决于HTML的版本。关于问题中的替代方案,第一个根据当前的HTML5草案无效(title
元素必须有一些内容,例如空格),第二个根本不是最小的(它有许多可选的)并且它无效(doctype
声明中缺少URL,并且未定义实体引用&npsp;
);此外,HTML 4.0在1999年被HTML 4.01淘汰。
为了避免目录列表(也可以通过其他方式避免),任何文件都可以,甚至是空文件。
但是,空文件或包含空白内容的HTML文档会在用户尝试访问http://foo.example.com/images/
时出现http://foo.example.com/images/index.html
时向用户显示空白页面无内容。因此,您可以考虑使用以下内容:
<!doctype html>
<title>Directory listing not allowed</title>
Directory listing not allowed.