使用apache拒绝除索引之外的所有文件

时间:2011-10-31 16:11:50

标签: php .htaccess indexing

这是我的 .htaccess

<Files *>
  Order Deny,Allow
  Deny from all
</Files>

<Files index.php>
  Order Deny,Allow
  Allow from all
</Files>

这不起作用,因为如果我在浏览器中键入主机名,它会提供index.php,但apache似乎不应用Files指令而是返回一个不允许的文件访问页面,我需要键入全名文件(例如'index.php')使其有效。这不是很方便......

如果我希望用户只访问我网站中每个文件夹的索引文件,该怎么办? 所有其他文件只是脚本包含,所以我相信我正在尝试使它们无法从网络上访问(或者可能不是,如果只有你有理由证明另一种情况)。

无论上述问题如何,这是正确的工作方式吗? (我认为这里的两个指令不是很整洁,但这是唯一的方法,几乎​​是我知道避免访问文件的唯一方法。)

2 个答案:

答案 0 :(得分:1)

不完全确定为什么需要这样做,但您可以使用mod_setenvif(无需将其包含在<Files>内)

SetEnvIf Request_URI ^/index.php$ index
Order Allow,Deny
Allow from env=index

这将导致访问hostname.com/到403,但允许hostname.com/index.php。如果你想允许/也可以添加

SetEnvIf Request_URI ^/$ index

到顶部。当然,所有这些都会使index.php链接到的任何内容也会返回403。

答案 1 :(得分:0)

<Files *?>
    Order deny,allow
    Deny from all
</Files>

您只需添加一个问号即可匹配至少一个字符。