一些背景信息:我有一个Qnap NAS,想要使用不同的电台(基本上是服务器应用程序)为我自己的客户提供音乐和图片,比如我的智能手机和笔记本电脑。在智能手机上我使用Qnap应用程序Qmusic和Qphoto。它工作得很好,我只是不喜欢用户“admin”登录电台的能力。
我可以通过.htaccess中的身份验证规则完全阻止某些用户。这通过Web浏览器访问工作站时工作正常,但会导致应用程序出现问题,因为他们不希望这样的身份验证。
现在我的问题:我需要在.htaccess文件中使用if-then-else程序,如下所示:
if user-agent is not "Qmusic" then
<authenticate>
end if
如果条件不正确,则应忽略此项。这可以以某种方式完成吗?
我已经上网了很长一段时间,但没有任何适合的事情。
感谢您的支持。
答案 0 :(得分:0)
您可能希望查看Apache mod_authz_core
文档,特别是Require env
指令。将引用的示例与this answer中的示例相结合,允许您基于用户代理设置变量,然后免除该用户代理的身份验证。
请注意,引用的答案是针对较早的Apache 2.2语法,该语法在2.4中仍然可用mod_access_compat
模块,但更新的语法是首选。
Apache 2.4示例:
SetEnvIf User-Agent ^Qmusic no-auth
AuthType Basic
AuthName "Protected Login"
AuthUserFile /path/to/htpasswd
Require valid-user
Require env no-auth
请注意,Require
块中隐含了多个<RequireAny>
指令,除非另有说明。这意味着请求必须匹配来自htpasswd
的有效用户或您选择的任何身份验证机制,或者请求必须与我们为no-auth
用户代理设置的Qmusic
环境变量匹配