我的网站根文件夹中有以下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?
答案 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的请求之前,这本来是允许的。