什么是最优雅的方式,只允许苹果操作系统用户进入网站,并将所有其他人redirect到默认页面?
以下似乎是一种奖励。
BrowserMatchNoCase Windows bad_os命令拒绝,允许拒绝env = bad_os
ErrorDocument 403 http://me.com/pc.html Order Deny,允许全部允许
一个简单的方法是使用BrowserMatchNoCase指令,这将允许您对用户代理环境variables进行不区分大小写的search。 也就是说,
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文档中获取 )。 然后你可以使用这个variablesredirect到不同的页面。 如果你有很多条件需要检查(而且我不知道你会需要多less),这将是更清洁的。 如果你只有less数几个,或者想把它们连在一起成为一个潜在的麻烦的string,你可以直接使用mod_rewrite 。 以下确保apple和mac不在用户代理中,并redirect不匹配的请求。
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]
这对RewriteCond使用[NC]标志,表示search不区分大小写 – 如果您不确定要匹配什么条件,则又是必要的。 RewriteRule中的F标志将返回一个403 Forbidden。
不过,请注意Robert Moir的评论,因为这依赖于浏览器发送一个匹配的用户代理 – 这甚至不可靠。 这应该让你开始,你可以find更多的匹配。
安德鲁
你可以使用mod_rewrite并检查HTTP_USER_AGENT,你将需要一个iOS用户代理列表。
另外,这个东西叫Apache Mobile Filter: http : //www.idelfuschini.it/it/apache-mobile-filter-v2x.html
我还没有使用它,但看起来不错。