Какой самый элегантный способ разрешить доступ только пользователям Apple OS на веб-сайт и перенаправить всех остальных на страницу по умолчанию?
Это вроде награды.
BrowserMatchNoCase Windows bad_os Order Deny, Allow Deny from env = bad_os
ErrorDocument 403 http://me.com/pc.html Заказ запретить, разрешить разрешить от всех
Легкий способ сделать это - использовать BrowserMatchNoCase
, которая позволит вам выполнять поиск переменной среды пользовательского агента без учета регистра. Т.е.,
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). Затем вы можете использовать эту переменную для перенаправления на разные страницы. Это было бы чище, если у вас есть много условий, которые нужно проверить (и я не знаю, сколько вам понадобится). Если у вас всего несколько или вы хотите объединить их в цепочку, которая может стать потенциально беспорядочной строкой, вы можете использовать mod_rewrite
прямо. Следующее гарантирует, что apple
и mac
отсутствуют в пользовательском агенте и перенаправляют несовпадающие запросы.
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]
Это использует [NC]
флаг для RewriteCond, который указывает, что поиск нечувствителен к регистру - опять же, необходимость, если вы не уверены, какие условия будут соответствовать. В F
флаг в RewriteRule вернет 403 Forbidden.
Однако обратите внимание на комментарий Роберта Мойра, потому что он полагается на то, что браузер отправляет соответствующий пользовательский агент, что даже близко не является надежным. Это должно помочь вам начать работу, и вы сможете добавлять дополнительные совпадения по мере их обнаружения.
Андрей
Вы можете использовать mod_rewrite и проверить HTTP_USER_AGENT, вам понадобится список пользовательских агентов iOS.
Кроме того, есть нечто, называемое мобильным фильтром Apache: http://www.idelfuschini.it/it/apache-mobile-filter-v2x.html
Пока не пользовался, но выглядит неплохо.