Задать вопрос
toffi77
@toffi77

Как сделать редирект на мобильную версию сайта в nginx?

server {  
    set $mobile_redirect 0;  

    if ($http_user_agent ~* '(Android|iPhone|iPad)') {  
        set $mobile_redirect 1;  
    }  

    if ($mobile_redirect) {  
        rewrite ^ https://m.example.com$request_uri permanent;  
    }  
}

Добрый день. Помогите, пожалуйста, разобраться, как указать папку для редиректа? Версия для ПК находится в папке html, и внутри папки html есть папка mobile. Там лежат файлы мобильной версии сайта: index.html и прочее.
  • Вопрос задан
  • 156 просмотров
Подписаться 2 Средний 1 комментарий
Решения вопроса 2
@maksam07
Ответ написан
Комментировать
@IvanShatsky
Очевидно, что запросы к example.com и m.example.com для подобной конфигурации надо обрабатывать в разных блоках server (иначе получим бесконечный цикл переадресации):

server {
    server_name example.com;
    root /var/www/html;

    set $mobile_redirect 0;
    # Условие, которое здесь надо записать, смотрим на http://detectmobilebrowsers.com/
    if (...) {
        set $mobile_redirect 1;
    }
    if ($mobile_redirect) {
        # Не нужен здесь rewrite и лишний вызов libpcre, достаточно return
        return 301 https://m.example.com$request_uri;
    }
    location ^~ /mobile/ {
        # Не надо из основного домена ходить в папку mobile
        internal;
    }

    # остальная конфигурация
    ...
}
server {
    server_name m.example.com;
    root /var/www/html/mobile;
    ...
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы