使用 HT访问进行移动用户代理检测



我想将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是错误的方式。有什么更好的方法呢?

你能试试这段代码吗:

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

已经在那里,您不想重定向到/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] 

因此,在这里,只有在没有"应用程序选择退出"cookie的情况下,您才会重定向到/getapp。在那里,您设置选择退出,以便在他们导航出getapp页面时不会再次重定向到那里。