1

我的方法是——否认一切,除了我熟悉的。

我想允许访问root和。index.phpfamiliar 'safe' extensions

因此,我不必考虑我应该保护什么,而是考虑我不应该保护什么。

这是我的 .htaccess 文件的外观:

# Disable files and directories index listing
Options -Indexes
DirectoryIndex index.php

# Deny all files.
<FilesMatch ".">
    Order Deny,Allow
    Deny from all
</FilesMatch>

# Except index.php
<FilesMatch "index.php$">
    Order Allow,Deny
    Allow from all
</FilesMatch>

# Except root
<FilesMatch "^$">
    Order Allow,Deny
    Allow from all
</FilesMatch>

# And except familiar extensions
<FilesMatch "\.(css|js|jpe?g|png|gif)$">
    Order Allow,Deny
    Allow from all
</FilesMatch>

一切正常,除非我尝试访问不带斜杠的地址:http://localhost/site而不是http://localhost/site/,然后我得到“禁止”错误页面。

非常感谢一些帮助。

4

2 回答 2

3

回复一个旧帖子,但如果其他人在这里徘徊,您可以按如下方式修改您的 FilesMatch:

<FilesMatch "^(/)?$">

这与带有或不带有斜杠的位置的根匹配。

于 2014-04-21T20:43:31.583 回答
2

通过拒绝仅访问包含点的文件来解决此问题.

# Deny all files.
<FilesMatch "\.">
    Order Deny,Allow
    Deny from all
</FilesMatch>
于 2013-07-17T16:15:02.210 回答