3

如何配置htaccess文件将 android 客户端重定向到一个 URL 并将 iPhone 客户端重定向到另一个?

4

1 回答 1

10

你当然可以!您所要做的就是查看用户代理并在满足条件时执行重定向。

RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} "android" [NC]
RewriteRule ^(.*)$ /android/$1 [L,QSA]

RewriteCond %{HTTP_USER_AGENT} "iphone|ipod|ipad" [NC]
RewriteRule ^(.*)$ /ios/$1 [L,QSA]

让我分解一下这里发生了什么。首先,我们确保RewriteEngine已打开(v.important)。这些RewriteCond行是必须满足的条件才能执行其后的规则。在我们的例子中,条件是在发出请求的设备的用户代理中出现某些关键字。第一个条件匹配单词“android”,第二个条件匹配任何字符串“iphone”、“ipod”、“ipad”。文本匹配是使用正则表达式完成的。

每行之后的行RewriteCond是根据他们的设备进行 URL 重写(在最终用户看来是重定向)的实际规则。该规则说接受整个请求(再次使用正则表达式)并添加到开头/androidor /ios。您看到的$1代表正在重写的实际请求字符串。

  • [NC]表示匹配不区分大小写(无大小写)。IE Android == aNdroid, IOS == iOS, 等等...
  • [L]表示当前规则是最后一条,不执行其他条件或规则。如果您只是在寻找 android 和 ios 设备之间的区别,那么您也许可以使用简单的androidiphone/ipad/ipod. 如果您想检测特定设备,则必须更具体地匹配它的用户代理。
于 2012-12-14T18:05:44.257 回答