2013-09-12 5 views
1

Я хочу перенаправить ipad/iphone и android пользователей на определенную страницу, которая сообщает пользователю, чтобы получить приложение или перейти на основной сайт.обнаружение мобильного агента пользователя с помощью htaccess

Я думал, что я мог бы сделать это с Htaccess:

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

Например, пользователь хочет перейти к http://www.example.com из Android или IOS устройства. Я хочу перенаправить этого пользователя на страницу getapp. На этой странице getapp есть ссылки для получения приложения (из Play или iTunes), и у него есть ссылка, чтобы перейти на главный сайт (www.example.com), если вы просто хотите пропустить загрузку приложения.

Но если я ставлю этот код внутри htaccess, я получаю This web page has a redirect loop. Возможно, htaccess - неправильный способ. Что это лучший способ сделать это?

+0

Вопрос не очень понятно. Что вы подразумеваете под «Это просто ставит меня в петлю»? – anubhava

+0

@anubhava обновленный вопрос, надеюсь, что поможет ... – Tom

ответ

0

Вы не хотите перенаправлять /getapp, если вы уже находитесь. Попробуйте исключить, что URI:

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

Чтобы позволить Optout после того, как пользователь посещает страницу getapp, вы должны будете упорствовать печенье или что-то:

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] 

Так вот, вы только перенаправить на /getapp, если есть no "app-optout" cookie. После этого вы установите опцию, чтобы они не перенаправлялись туда снова, если они перемещаются из страницы getapp.

+0

Спасибо за ответ, но вас там уже нет. Я попытался уточнить свой вопрос. – Tom

+0

@Tom, если вы хотите отследить пользователя «отказа от приема», вам нужно что-то более стойкое, чем URI. –

0

Вы можете попробовать этот код:

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

. Аналогичная проблема с этим – Tom

+0

У вас есть другой .htaccess в любом месте вашего DOCUMENT_ROOT или любого другого существующего правила? – anubhava

Смежные вопросы