使用htaccess检测移动用户代理

时间:2013-09-12 17:56:45

标签: android ios .htaccess

我想将ipad / iphone和Android用户重定向到一个特定页面,告诉用户获取应用程序或继续访问主站点。

我以为我可以用htaccess做到这一点:

 RewriteCond %{HTTP_USER_AGENT} "android|ipad|iphone|ipod" [NC]
 RewriteRule ^(.*)$ http://www.example.com/getapp [L,R=302]

例如,用户想要从Android或iOS设备转到http://www.example.com。我想将该用户重定向到getapp页面。在这个getapp页面中是获取应用程序的链接(来自Play或iTunes),如果您只是想跳过应用程序的下载,它会有一个指向主站点(www.example.com)的链接。

但是如果我将此代码放在htaccess中,我会得到This web page has a redirect loop。也许htaccess是错误的方式。有什么更好的方法呢?

2 个答案:

答案 0 :(得分:0)

如果您已经在那里,则不想重定向到/getapp。尝试排除该URI:

RewriteCond %{HTTP_USER_AGENT} "android|ipad|iphone|ipod" [NC]
RewriteRule !^getapp http://www.example.com/getapp [L,R=302]

要在用户访问getapp页面后允许退出,您需要保留Cookie或其他内容:

RewriteCond %{HTTP_USER_AGENT} "android|ipad|iphone|ipod" [NC]
RewriteCond %{HTTP_COOKIE} !app-optout
RewriteRule !^getapp http://www.example.com/getapp [L,R=302]

RewriteCond %{HTTP_USER_AGENT} "android|ipad|iphone|ipod" [NC]
RewriteRule ^getapp - [CO=app-optout:1:www.example.com] 

所以在这里,如果没有“app-optout”cookie,你只能重定向到/getapp。在那里,你设置了选择退出,这样如果他们离开getapp页面,他们就不会再被重定向到那里。

答案 1 :(得分:0)

你可以尝试这段代码:

RewriteCond %{HTTP_USER_AGENT} "android|ipad|iphone|ipod" [NC]
RewriteRule ^(?!getapp).*$ http://www.example.com/getapp [L,R=302,NC]