htaccess:特定用户代理

时间:2017-12-19 09:14:02

标签: apache .htaccess authentication

一些背景信息:我有一个Qnap NAS,想要使用不同的电台(基本上是服务器应用程序)为我自己的客户提供音乐和图片,比如我的智能手机和笔记本电脑。在智能手机上我使用Qnap应用程序Qmusic和Qphoto。它工作得很好,我只是不喜欢用户“admin”登录电台的能力。

我可以通过.htaccess中的身份验证规则完全阻止某些用户。这通过Web浏览器访问工作站时工作正常,但会导致应用程序出现问题,因为他们不希望这样的身份验证。

现在我的问题:我需要在.htaccess文件中使用if-then-else程序,如下所示:

if user-agent is not "Qmusic" then <authenticate> end if

如果条件不正确,则应忽略此项。这可以以某种方式完成吗?

我已经上网了很长一段时间,但没有任何适合的事情。

感谢您的支持。

1 个答案:

答案 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环境变量匹配