htaccess阻止index.html自动加载

时间:2013-07-13 07:22:31

标签: apache .htaccess

我的网站根文件夹中有以下htaccess文件:

# Deny access to everything by default
Order Deny,Allow
deny from all

# Allow access to html files
<Files *.html>
    allow from all
</Files>

我这样做是为了防止访问除html文件之外的所有内容。但是,它似乎也阻止了index.html自动加载(例如,导航到http://www.website.com失败)。但如果我特意请求index.html(例如http://www.website.com/index.html),我可以访问它。

如何拒绝访问除html文件以外的所有内容并仍然自动加载index.html?

2 个答案:

答案 0 :(得分:1)

我认为您必须在.htaccess文件中使用DirectoryIndex指令:

DirectoryIndex index.html

答案 1 :(得分:0)

我能够添加一个FilesMatch规则来实现这个目的:

# Deny access to everything by default
Order Deny,Allow
deny from all

# Enable the redirect to index.html
<FilesMatch ^$>
    allow from all
</FilesMatch>

# Allow access to html files
<Files *.html>
    allow from all
</Files>

这实质上允许匹配空请求路径的任何内容。我认为这里的问题是在应用自动索引重定向之前,允许/拒绝规则被应用于传入请求。所以基本上http://www.website.com/的请求会进来,不匹配任何列入白名单的文件类型,并且被所有声明的全面拒绝拒绝。显然这是在此时将请求短路 - 在它被自动重定向到index.html的请求之前,这本来是允许的。

相关问题