我整个上午都在摆弄这个,我真的希望有人能帮助我。我的网站上有一个目录,只有管理员才能访问。所以我使用 .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 -> 好的
http://www.example.com/admin/ -> 关于登录的弹出窗口
http://www.example.com/admin -> 关于登录的弹出窗口
所以我继续修改正则表达式:
<FilesMatch "^(|index\.php)$">
Satisfy Any
Allow from all
</FilesMatch>
不是我写过的最好的正则表达式,但嘿,有一些结果:
http://www.example.com/admin/index.php -> 好的
http://www.example.com/admin/ -> 好的
http://www.example.com/admin -> 关于登录的弹出窗口
我只是不明白为什么这不起作用。我也尝试像这样扭转整个事情:
AuthUserFile "/home/example.com/passwords/.htpasswd"
AuthType Basic
AuthName "Admin"
<FilesMatch "^(?!index\.php).+$">
require valid-user
</FilesMatch>
但再次无济于事......有人看到解决方案吗?
最佳答案
我不知道如何允许访问 http://www.example.com/admin
但是您可以通过重定向对 index.php 的访问来避免该目录被调用
正如你在这里看到的:
RewriteRule ^admin$ admin/index.php
或者如果你需要获取参数
RewriteRule ^admin\/?\?([^#]*)$ admin/index.php?$1
关于apache - 只允许访问目录索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6815874/