Re: Как вытащить нужные данные из user-agent?
igroykt
nginx-forum на forum.nginx.org
Пн Янв 25 11:57:08 UTC 2016
igroykt Wrote:
-------------------------------------------------------
> Ясно. Ну деваться уже некуда. Вроде решил вложенными if-ами.
> В итоге получилась следующая бяка:
> Если в строке есть android но нет намека на kindlefire...
> if ($http_user_agent ~* "(android)") {
> set $android A;
> }
> if ($http_user_agent !~*
> "(kftt|kfot|kfjwa|kfjwi|kfsowi|kfthwa|kfthwi|kfapwa|kfapwi|kfaswi|kftb
> wi|kfmewi|kffowi|kfsawa|kfsawi|kfarwi)") {
> set $android "${android}B";
> }
> if ($android = AB) {
> set $android_rewrite perform;
> }
>
> Ну и наоборот
> if ($http_user_agent ~* "(android)") {
> set $amazon A;
> }
> if ($http_user_agent ~*
> "(kftt|kfot|kfjwa|kfjwi|kfsowi|kfthwa|kfthwi|kfapwa|kfapwi|kfaswi|kftb
> wi|kfmewi|kffowi|kfsawa|kfsawi|kfarwi)") {
> set $amazon "${amazon}B";
> }
> if ($amazon = AB) {
> set $amazon_rewrite perform;
> }
> Вообще наверное лучше искомые слова для kindlefire вынести в
> переменную чтобы в нескольких местах не подправлять если выйдут новые
> девайсы.
Как бы теперь запихнуть эти kftt и т.д. в одну переменную? чтобы получилось
if ($http_user_agent ~* $kindle)
Мап не сработал:
map $host $kindlefire {
default
kftt|kfot|kfjwa|kfjwi|kfsowi|kfthwa|kfthwi|kfapwa|kfapwi|kfaswi|kftbwi|kfmewi|kffowi|kfsawa|kfsawi|kfarwi;
}
и сет тоже не проканал:
set $kindlefire
kftt|kfot|kfjwa|kfjwi|kfsowi|kfthwa|kfthwi|kfapwa|kfapwi|kfaswi|kftbwi|kfmewi|kffowi|kfsawa|kfsawi|kfarwi;
if ($http_user_agent ~* "($kindlefire)") {
set $amazon "${amazon}B";
}
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,264075,264099#msg-264099
Подробная информация о списке рассылки nginx-ru