.htaccess 可以用来过滤白名单吗?

Can .htaccess be used to filter a white list?

有没有办法生成可接受文件或类型的白名单?我看过拒绝文件请求的方法——是否可以拒绝除列表中的请求以外的所有请求?

我想到的那种白名单是这样的:

*.html;*.jpg;*.css;*.php

…等等

我认为其他文件请求可能会导致 404 找不到文件

谢谢

您可以在根 .htaccess 中创建这样的白名单:

# deny everything first
Order Deny,Allow
Deny from  all

# then allow selected whitelisted extensions
<FilesMatch '\.(php|html|jpe?g|css|js)$'>
  Allow from all
</FilesMatch>

编辑: 要 return 404 非白名单文件使用此规则:

RewriteEngine On

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule !\.(php|html|jpe?g|css|js)$ - [L,NC,R=404]

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ /index.php?page= [QSA,L]