【问题标题】:.htaccess password protect directory but allow image file types.htaccess 密码保护目录但允许图像文件类型
【发布时间】:2011-10-15 08:15:34
【问题描述】:

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

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

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

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

感谢您的帮助!

【问题讨论】:

    标签: php .htaccess


    【解决方案1】:

    你试过把它放在 Filematch 里面吗?

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

    【讨论】:

    • 这行不通。它保护图像,但不保护其他文件。与 OP 想要的相反
    【解决方案2】:

    你可以尝试写一个图片显示代理:

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

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

    【讨论】:

      【解决方案3】:
      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 的改进

      【讨论】:

      • +1。短而甜!虽然应该将正则表达式更改为仅从字符串 FilesMatch "\.(png|jpe?g|gif)$" 的末尾匹配。
      【解决方案4】:

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

      Stupid htaccess Tricks

      【讨论】:

        猜你喜欢
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 2014-12-16
        • 1970-01-01
        • 2013-10-20
        • 1970-01-01
        • 2022-01-07
        相关资源
        最近更新 更多