仅允许访问目录索引

the*_*rce 6 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>
Run Code Online (Sandbox Code Playgroud)

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

http://www.example.com/admin/index.php - >好的

http://www.example.com/admin/ - > Popup哭着登录

http://www.example.com/admin - > Popup哭着登录

所以我继续修改了正则表达式:

<FilesMatch "^(|index\.php)$">
    Satisfy Any
    Allow from all
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

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

http://www.example.com/admin/index.php - >好的

http://www.example.com/admin/ - >好的

http://www.example.com/admin - > Popup哭着登录

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

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

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

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

小智 0

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

RewriteRule ^admin$ admin/index.php
Run Code Online (Sandbox Code Playgroud)

或者如果您需要获取参数

RewriteRule ^admin\/?\?([^#]*)$ admin/index.php?$1
Run Code Online (Sandbox Code Playgroud)