问题 .htaccess密码保护目录但允许图像文件类型


我需要使用.htaccess密码保护目录,我已成功完成。但是网站的前端被编程为链接到这个受密码保护的目录(不是我)中的图像,但是当网页试图访问这些图像时,它会提示用户登录。

是否可以密码保护该目录,但允许任何图像文件类型的访问,如* .jpg和* .gif?

我目前的.htaccess代码是这样的:

AuthName "Secure Area"
AuthUserFile "/home/siteuser/.htpasswds/public_html/admin/passwd"
AuthType Basic
require valid-user

谢谢你的帮助!


2251
2017-07-28 17:32


起源



答案:


AuthName "Secure Area"
AuthUserFile "/home/siteuser/.htpasswds/public_html/admin/passwd"
AuthType Basic
require valid-user
<FilesMatch "\.(png|jpe?g|gif)$">
  Satisfy Any
  Allow from all
</FilesMatch>

编辑以融入Shef的改进


16
2017-07-28 18:23



+1。短而甜!虽然应该将正则表达式更改为仅匹配字符串的末尾 FilesMatch "\.(png|jpe?g|gif)$"。 - Shef
非常好,这非常有效,谢谢! - Kevin


答案:


AuthName "Secure Area"
AuthUserFile "/home/siteuser/.htpasswds/public_html/admin/passwd"
AuthType Basic
require valid-user
<FilesMatch "\.(png|jpe?g|gif)$">
  Satisfy Any
  Allow from all
</FilesMatch>

编辑以融入Shef的改进


16
2017-07-28 18:23



+1。短而甜!虽然应该将正则表达式更改为仅匹配字符串的末尾 FilesMatch "\.(png|jpe?g|gif)$"。 - Shef
非常好,这非常有效,谢谢! - Kevin


您可以检查配置的所有不同选项.htaccess在以下站点中为您提供:

愚蠢的htaccess技巧


1
2017-12-15 18:14





你试过把它放在Filematch中吗?

<FilesMatch "^.*(png|jpe?g|gif)$">
AuthName "Secure Area"
AuthUserFile "/home/siteuser/.htpasswds/public_html/admin/passwd"
AuthType Basic
require valid-user
</FilesMatch>

0
2017-07-28 18:03



这不行。它保护图像,但不保护其他文件。与OP想要的相反 - genesis


您可以尝试编写图像显示代理:

  • 保持目录,就像你现在拥有密码保护一样。
  • 在链接图像的网站根目录上的.htaccess中,为所需的图像类型添加“重写”规则。此规则应将调用重定向到PHP处理程序脚本。
  • 该脚本应评估所请求的路径,从文件系统加载文件,扣除其标头并使用该文件发送到客户端 header(),然后是图像文件的内容 echo file_get_contents()应该做。

PHP不受.htaccess的影响,因此它应该能够读取您需要的文件并将其代理给最终用户。


-1
2017-07-28 18:09