仅允许访问目录索引

时间:2011-07-25 12:09:06

标签: apache .htaccess basic-authentication

我整个上午一直在摆弄这个,我真的希望有人可以帮助我。我的网站上有一个目录,只有管理员必须能够访问。所以我使用.htaccess文件密码保护它。但我希望index.php仍然可以访问。

所以我试过了:

AuthUserFile "/home/example.com/passwords/.htpasswd"
AuthType Basic
AuthName "Admin"
require valid-user

<FilesMatch "^index\.php$">
    Satisfy Any
    Allow from all
</FilesMatch>

是的,它是有效的,但只有在URL中明确指定index.php:

http://www.example.com/admin/index.php - &gt;行

http://www.example.com/admin/ - &gt; Popup哭着登录

http://www.example.com/admin - &gt; Popup哭着登录

所以我接着修改了正则表达式:

<FilesMatch "^(|index\.php)$">
    Satisfy Any
    Allow from all
</FilesMatch>

不是我写过的最好的正则表达式,但是嘿,有一些结果:

http://www.example.com/admin/index.php - &gt;行

http://www.example.com/admin/ - &gt;行

http://www.example.com/admin - &gt; Popup哭着登录

我只是不明白为什么这不起作用。我也试图像这样扭转整个事情:

AuthUserFile "/home/example.com/passwords/.htpasswd"
AuthType Basic
AuthName "Admin"

<FilesMatch "^(?!index\.php).+$">
    require valid-user
</FilesMatch>

但又无济于事......任何人都能看到解决方案吗?

1 个答案:

答案 0 :(得分:0)

我不知道如何允许访问http://www.example.com/admin 但是您可以通过将访问重定向到index.php来避免调用目录 如您所见:

RewriteRule ^admin$ admin/index.php

或者如果需要获取参数

RewriteRule ^admin\/?\?([^#]*)$ admin/index.php?$1