![htaccess 仅适用于 Apple 用户](https://linux22.com/image/530391/htaccess%20%E4%BB%85%E9%80%82%E7%94%A8%E4%BA%8E%20Apple%20%E7%94%A8%E6%88%B7.png)
仅允许 Apple OS 用户访问网站并将所有其他用户重定向到默认页面的最优雅方法是什么?
以下似乎是种奖励。
BrowserMatchNoCase Windows bad_os 顺序拒绝,允许拒绝来自 env=bad_os
错误文档 403http://me.com/pc.html 命令 拒绝,允许 允许所有人
答案1
一个简单的方法是使用BrowserMatchNoCase
指令,它将允许您对用户代理环境变量进行不区分大小写的搜索。即,
BrowserMatchNoCase apple platform=macintosh
BrowserMatchNoCase mac platform=macintosh
[etc..]
RewriteCond %{ENV:platform} !macintosh
# Don't actually rewrite to anything (-); just return 403
RewriteRule ^.* - [F,L]
(摘自mod_setenvif 文档)。然后,您可以使用此变量重定向到不同的页面。如果您有许多条件要检查(我不知道您需要多少条件),这将更清晰。如果您只有几个条件,或者想将它们链接在一起,这可能会变成一个混乱的字符串,则可以mod_rewrite
直接使用。以下内容确保apple
和mac
不在用户代理中,并重定向不匹配的请求。
RewriteCond %{HTTP_USER_AGENT} !apple [NC]
RewriteCond %{HTTP_USER_AGENT} !mac [NC]
[etc..]
# Don't actually rewrite to anything (-); just return 403
RewriteRule ^.* - [F,L]
这使用[NC]
RewriteCond 的标志,该标志表示搜索不区分大小写——同样,如果您不确定要匹配什么条件,则必须这样做。RewriteRuleF
中的标志将返回 403 Forbidden。
不过,请注意 Robert Moir 的评论,因为这依赖于浏览器发送匹配的用户代理——这根本就不可靠。这应该可以帮助您入门,并且您可以在找到更多匹配项时继续使用它们。
安德鲁
答案2
您可以使用 mod_rewrite 并检查 HTTP_USER_AGENT,您将需要一个 iOS 用户代理列表。
另外,还有一个叫 Apache Mobile Filter 的东西:http://www.idelfuschini.it/it/apache-mobile-filter-v2x.html
我还没有用过它,但是看起来不错。